我有一个奇怪的问题,我对XML这个主题是新手。
我正在向一个XML文件添加行,该文件应该使用Excel“可打开”。
现在,我复制一个表行,并对其进行编辑,然后再次将其添加到该表中。问题在于,如果我在获取该行时使用line:
XmlNode row = table.ChildNodes[6].CloneNode(true);
XmlNode row = table.ChildNodes[6];
此外,Table和WorksheetOptions的位置也会切换(Table是在WorksheetOptions之前,所以现在是在WorksheetOptions之后)。以下是整个测试代码
using System; using System.Collections; using System.Xml; namespace TIS { class Program { static void Main(string[] args) { string loadPath = @"C:\Export Template.xml"; string savePath = @"C:\Users\Ilija.DESKTOP-5Q1E02D\Desktop\Export Template Export.xml"; XmlDocument xml = new XmlDocument(); xml.Load(loadPath); XmlNamespaceManager nsmgr = new xmlNamespaceManager(xml.NameTable); nsmgr.AddNamespace("ss", "urn:schemas-microsoft-com:office:spreadsheet"); XmlElement root = xml.DocumentElement; XmlNodeList nodeList = root.SelectNodes("//ss:Worksheet", nsmgr); //FIND "PL" SHEET XmlNode nSheet = xml.DocumentElement; foreach (XmlNode n in nodeList) if (n.Attributes["ss:Name"].Value == "PL") nSheet = n; //FIND TABLE NODE & CREATE OTHER NODES XmlNode table = nSheet.ChildNodes[0]; XmlNode row = table.ChildNodes[6].CloneNode(true); XmlNode cell = row.ChildNodes[0]; XmlNode lastRow = table.LastChild; table.RemoveChild(table.LastChild); //POPULATE NODES row.ChildNodes[0].ChildNodes[0].InnerText = "tID"; row.ChildNodes[1].ChildNodes[0].InnerText = "tENG"; row.ChildNodes[2].ChildNodes[0].InnerText = "tSRB"; row.ChildNodes[3].ChildNodes[0].InnerText = "tItem Code"; row.ChildNodes[4].ChildNodes[0].InnerText = "tAmount"; table.AppendChild(row); table.AppendChild(lastRow); nSheet.AppendChild(table); //xml.DocumentElement.RemoveChild(xml.DocumentElement.LastChild); //xml.DocumentElement.AppendChild(nSheet); xml.Save(savePath); /* IEnumerator ienum = nodeList.GetEnumerator(); while (ienum.MoveNext()) { XmlNode title = (XmlNode)ienum.Current; Console.WriteLine(title.InnerText); } //*/// wl("end"); wait(); } static void wl(string message = "") { Console.WriteLine(message); } static void wait() { Console.ReadLine(); } } }
所以,我的问题是:为什么这个错误突然出现,我可以做些什么来防止它/解决它?我试着用Table和WorksheetOptions切换位置,但没有成功。我还从原来的tamplate中添加了WorksheetOptions,错误就会出现。请记住:我对C#中的xml是新手。欢迎任何关于如何向工作簿/工作表/表中添加行的建议。
在这里回答我自己的问题。
错误是一个wierd错误。我不得不尝试编辑.xml文件manualy,并认为excel不能工作,因为我有一个
XML ERROR in Table
REASON: Bad Value
FILE: C:\Users\Ilija.DESKTOP-5Q1E02D\Desktop\Export Template Export.xml
GROUP: Cell
TAG: Data
VALUE:
XML ERROR in Table
REASON: Bad Value
FILE: C:\Users\Ilija.DESKTOP-5Q1E02D\Desktop\Export Template Export.xml
GROUP: Cell
TAG: Data
VALUE:
如前所述,错误是该值为空字符串。填充它,它应该工作正常。
本文向大家介绍详解 c# 克隆,包括了详解 c# 克隆的使用技巧和注意事项,需要的朋友参考一下 克隆方法是原型设计模式中必须使用的方式,它将返回一个与当前对象数据一致的对象。正如其名,犹如一个模子雕刻而出。克隆类型分为两种:浅克隆、深克隆。 1、浅克隆 浅克隆方式是最简单、最直接的方式。只需要类实现接口ICloneable(在命名空间System.Runtime.InteropServices下)
我是新来的,从克隆存储库时出现以下错误。 我试图在这里搜索所有相关问题,但可以找到确切的stacktstrace和答案。 我正在尝试克隆需要用户名和密码的存储库,我正在作业配置设置中为我的作业提供存储库路径。我什么也没做。ssh相关设置,因为这似乎与GIT存储库的安全问题不同。 我不知道Jenkins试图执行什么注释,也不知道它找到了哪个文件/目录。 这是我在詹金斯工作中的确切堆栈跟踪: 原因:j
问题内容: 我是新手,从克隆存储库时出现以下错误。 我试图在这里搜索所有相关问题,但可以找到确切的stacktstrace和答案。 我正在尝试克隆需要用户名和密码的存储库,我在作业的工作配置设置中提供了存储库路径。我尚未进行任何与.ssh相关的设置,因为这似乎是与GIT存储库的安全性问题不同的问题。 我不知道詹金斯想执行什么注释,它找不到哪个文件/目录。 这是我从詹金斯工作得到的确切堆栈跟踪: 引
更新:该错误似乎与我拥有的.babelrc文件有关: 当我移除这个文件时,错误就消失了。 原帖: 我正在使用React与包裹捆绑器。首先,我有一个问题,与我的包裹版本和@babel/preset-env(无效版本:未定义)不兼容有关。 我通过在package.json文件中添加一个resolutions标记来解决问题,以强制使用不需要version对象的以前版本的Babel。这起作用了,但现在我在
问题内容: 如何克隆 Java并同时在Java中克隆其项目? 例如,我有: 我希望其中的对象与狗列表中的对象不同。 问题答案: 你将需要迭代这些项目,然后逐个克隆它们,然后将克隆放入结果数组中。 显然,要使该方法起作用,你将必须使你的类实现接口并重写该方法。
问题内容: 我该怎么办 与JGIT库? 问题答案: 您不能,JGit尚不支持客户端上的浅表克隆(不过,它在服务器端上)。