2014-10-22 2 views
0

두 개의 샘플 XML 파일을 하나로 합치기 위해 다음 SO (How to merge two XmlDocuments in C#)를 사용했습니다. 기본적으로 여기 내 두 개의 XML 파일은두 개의 xml_docs 결합 C# xmlDocument

test1.xml :

<root> 
    <Name> 
     <id>4</id> 
     <First_name>Tony</First_name> 
     <last_name>""</last_name> 
    </Name> 
    <Name> 
     <id>6</id> 
     <First_name>Donny</First_name> 
     <last_name>Test</last_name> 
     <middle_name>Ward</middle_name> 
    </Name> 
</root> 

그리고 test2.xml이 코드를 사용하고

<root> 
    <Name> 
     <id>1</id> 
     <First_name>Nick</First_name> 
     <last_name>Tester</last_name> 
    </Name> 
    <Name> 
     <id>2</id> 
     <First_name>Lauren</First_name> 
     <last_name>MsTester</last_name> 
    </Name> 
</root> 

는 하나 개의 파일 만 프로 시저에 병합 할 니펫 실제로 그들을 결합하지 않습니다. 나는 xmlDocument 클래스에 대해 조금 알고 있었고 여전히이 문제를 올바르게 탐색하려고 시도하고있다.

코드 :

XmlDocument xmlreader1 = new XmlDocument(); 
xmlreader1.Load("C:\\Temp\\test1.xml"); 
XmlDocument xmlreader2 = new XmlDocument(); 
xmlreader2.Load("C:\\Temp\\test2.xml"); 

foreach (XmlNode node in xmlreader2.DocumentElement.ChildNodes) 
{ 
    XmlNode importedDocument = xmlreader1.ImportNode(node, true); 
    xmlreader1.DocumentElement.AppendChild(importedDocument); 
} 

나는이 test2.xml에서 (이 경우 <name>에) 루트의 각 자식 노드를 가지고 test1.xml 그것을 추가 할 올바른 생각합니다. 또한 다음과 같이 시도했습니다.

XmlNode importedDocument = xmlreader1.ImportNode(xmlreader2.DocumentElement, true); 
xmlreader1.DocumentElement.AppendChild(importedDocument); 

다시 사용할 수있는 제안 사항은 없습니다.

+0

'XmlDocument'를 사용하려면 특히 * 필요합니까? LINQ to XML은 일반적으로 사용하기가 더 쉽습니다. 또한 게시물 형식을 좀 더 자세하게 처리하십시오. 미리보기를보고 질문에 답을 얻으 려한다면 어떻게 보이는지 궁금 할 때 제출하십시오. –

답변

0

그것은 아니에요 수행해야 할 작업을 병합 어떤 완전히 명확 -하지만 당신은 단지 루트 노드의 자식 요소를 복사해야하는 경우, 즉 XML에 LINQ와 정말 간단합니다

XDocument doc1 = XDocument.Load("test1.xml"); 
XDocument doc2 = XDocument.Load("test2.xml"); 
doc1.Root.Add(doc2.Root.Elements()); 
doc1.Save("test3.xml"); 

이 수행되지 않습니다 모든 실제 병합 - 두 파일에서 동일한 ID를 가진 요소가있는 경우 하나의 병합 된 요소가 아니라 결과의 두 요소로 끝납니다.

개인적으로 나는 항상 XmlDocument API를 통해 LINQ to XML을 선호합니다. 나는 강력하게을 할 기회가있을 때 사용하는 것이 좋습니다.