2012-01-31 95 views
1

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

然后我真的需要采取的firstCover里面有什么是为那本书的全部内容:

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

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

回答

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");