2012-01-31 6 views
1

매우 간단한 것처럼 보일 수있는 질문이 있지만 두통이 있습니다. 내가 좋아하는 여러 항목이이 XML 파일이 : ID = 1 책의 제 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> 

지금을, 나는이 작업을 수행 :

XmlNodeList b = root.SelectNodes("/books/book[contains(id,1)]/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");