【问题标题】:Get XML content from XmlNodeList从 XmlNodeList 获取 XML 内容
【发布时间】:2012-01-31 01:56:41
【问题描述】:

我有一个看起来很简单的问题,但它让我很头疼。我有这个包含多个条目的 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");

那么我真的需要为这本书获取 firstCover 中的全部内容:

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

并将其插入 XmlElement。这就是我卡住的地方。我知道我可以用 XmlNodeList 中的 foreach 循环来做到这一点,但是有没有更简单的方法?

【问题讨论】:

    标签: c# .net xml xmlnodelist


    【解决方案1】:

    我猜你想将它实际插入到另一个 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");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-22
      • 2012-12-04
      • 1970-01-01
      • 2021-10-15
      • 2012-03-13
      • 2011-05-07
      • 2015-02-08
      • 2015-01-26
      相关资源
      最近更新 更多