目前我有一个有效的C#程序,其工作原理如下:
转换并将.xls写入XML。请参阅以下示例输出:
现在,我想做的是:
保存/创建带有附加节点的新xml。请看下面的输出:
我现有的C#程序很简单,但XML节点和层次结构非常血腥。我刚刚使用new XElement
方法创建了C#代码并为每个节点传递值。然后我只使用xmlDocument.Save()
方法编写xml。
[现有XML程序] [3]
答案 0 :(得分:0)
要在现有xml-data中添加节点或附加内容,请使用Linq to XML。
XElement xml = XElement.Load("file.xml");
xml.Add( new XElement("uberNode",
new XElement("childNode", content),
new XElement("anotherChildNode", content)));
xml.Save("file.xml");
Here是其他一些相关的解决方案。
添加到特定节点(带示例):
现有的XML数据:
`<Names>
<Name>
<prename>John</prename>
<lastname>Snow</lastname>
</Name>
<Name>
<prename>Harry</prename>
<lastname>Harry</lastname>
</Name>
</Names>`
现在我想在第一个“prename”-tag之前添加“age”标签,在第一个“lastname”-tag之后添加“family”标签。
XElement xml = XElement.Load("file.xml");
var childrens = xml.DescendantsAndSelf().ToArray();
var first_prename = childrens[2];
var first_lastname = childrens[3];
Console.WriteLine(childrens[0]); //prints out the whole content
first_prename.AddBeforeSelf(new XElement("age", 22));
first_lastname.AddAfterSelf(new XElement("family", new XElement("mother", "paula"), new XElement("father", "paul")));
xml.Save("file.xml");
<强>结果:强>
`<Names>
<Name>
<age>22</age>
<prename>John</prename>
<lastname>Snow</lastname>
<family>
<mother>paula</mother>
<father>paul</father>
</family>
</Name>
<Name>
<prename>Harry</prename>
<lastname>Harry</lastname>
</Name>
</Names>`
我遇到了问题,Linq给了我最简单的方法! 还有其他类似的方式,例如here。但我尝试了一点,DescendantsAndSelf()使我更容易通过。
答案 1 :(得分:0)
我找到了问题的答案,这里是链接http://www.xmlplease.com/add-xml-linq 使用XPathSelectElement方法,我能够找到正确的节点并附加新的XElement块。