我是新手,这是我关于 stackoverflow 的第一个问题,请多多包涵。
我有以下 xml 文件
<?xml version="1.0" encoding="utf-8"?>
<items>
<superitem>
<item id="10" name="Ten"
description="This is number ten">
<attribute name="weight" value="1" />
<attribute name="capacity" value="80" />
</item>
<item id="20" name="Twenty"
description="This is might be number twenty">
<attribute name="weight" value="1" />
<attribute name="opaque" value="11" />
<uncertain>
<uncertainity name="might" level="Eighty Twenty."/>
</uncertain>
</item>
</superitem>
</items>
在代码中我试图复制 id = 20 的节点
newItem.SelectSingleNode("/items/superitem/item[@id='20']")
并将该唯一节点保存到另一个 xml 文件。所以我正在尝试获取这样的 xml
<?xml version="1.0" encoding="utf-8"?>
<items>
<superitem>
<item id="20" name="Twenty"
description="This is might be number twenty">
<attribute name="weight" value="1" />
<attribute name="opaque" value="11" />
<uncertain>
<uncertainity name="might" level="Eighty Twenty."/>
</uncertain>
</item>
</superitem>
</items>
我尝试在该 xml 的最后一个子节点之后将节点导入 xml 文件,我可以做到。如果我需要只使用该节点创建一个新的 xml 文件怎么办?输出 xml 与我上面提到的完全一样??
最佳答案
使用 XElement (XLinq) 更容易。
XElement oldDoc = XElement.Load(filename1);
//XElement items = oldDoc.XPathSelectElements("/items/superitem/item[@id='20']");
//XElement newDoc = new XElelement("items", new XElement("superitem", items));
// Because of using an XElement as toplevel (and not XDocumet),
// the XPath has to start lower. And a Singular result is more to the point.
var item = doc.XPathSelectElement("//superitem/item[@id='20']");
XElement newDoc = new XElelement("items", new XElement("superitem", item));
newDoc.Save(fileName2);
关于c# - 复制一个节点并将其保存为一个新的 xml 文件 c#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18651320/