从XmlNodeList获取XML内容

时间:2012-01-31 01:56:41

标签: c# .net xml xmlnodelist

我有一个看起来很简单的问题,但这让我很头疼。我有这个XML文件有多个条目,如:

    <books>
     <book>
      <id>1</id>
      <firstCover>
       <author name="**" age="**" />
       <title name="zz" font="yyy" size="uuu"/>
      </firstCover>
      <lastCover>
      </lastCover>
     </book>
     <book>
      <id>2</id>
      <firstCover>
       <author name="**" age="**" />
       <title name="zz" font="yyy" size="uuu"/>
      </firstCover>
      <lastCover>
      </lastCover>
     </book>
</books>

现在,为了获取id = 1的第一本书封面的XML内容,我这样做:

XmlNodeList b = root.SelectNodes("/books/book[contains(id,1)]/firstCover");

然后我真的需要把这本书的第一封内容的全部内容都拿出来:

<author name="**" age="**" />
<title name="zz" font="yyy" size="uuu"/>

并将其插入XmlElement。这是我被困的地方。我知道我可以在XmlNodeList中使用foreach循环来实现它,但有更简单的方法吗?

1 个答案:

答案 0 :(得分:0)

我猜你想把它实际插入到另一个XMLDocument的XMLElement中。

这是你在找什么?

XmlDocument sourceDoc = new XmlDocument();
//This is loading the XML you present in your Question.
sourceDoc.LoadXml(xmlcopier.Properties.Resources.data);
XmlElement root = sourceDoc.DocumentElement;


XmlElement b = (XmlElement)root.SelectSingleNode("/books/book[contains(id,1)]/firstCover");

XmlDocument destDoc = new XmlDocument();
XmlElement destRoot = destDoc.CreateElement("base");
destDoc.AppendChild(destRoot);
XmlElement result = destDoc.CreateElement("firstCover");


result.InnerXml = b.InnerXml;
destRoot.AppendChild(result);


destDoc.Save("c:\\test.xml");