2012-01-31 104 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");