2009-03-11 13 views

Odpowiedz

13

XmlDocumentjest zasadzie XmlNode, więc można dodać, że tak jak byś zrobił dla innych XmlNode. Jednak różnica wynika z faktu, że ten nie należy do dokumentu docelowego, dlatego należy użyć metody ImportNode , a następnie wykonać załącznik.

// xImportDoc is the XmlDocument to be imported. 
// xTargetNode is the XmlNode into which the import is to be done. 

XmlNode xChildNode = xSrcNode.ImportNode(xImportDoc, true); 
xTargetNode.AppendChild(xChildNode); 
+2

ah tak, ale co to jest xSrcNode? Dlaczego pojawia się komunikat o błędzie: Nie można zaimportować węzłów typu "Dokument". Jakiego rodzaju jest xTargetNode? – fijiaaron

+2

@fijiaaron Musisz wybrać element główny z dokumentu: 'XmlNode xChildNode = xSrcNode.ImportNode (xImportDoc.DocumentElement, true);' – nmat

+0

Jeśli twój XmlDoc jest obecnie wpisany jako XmlNode lub jeśli próbujesz zaimportować XmlNode można zamiast tego "XmlNode xChildNode = xSrcNode.ImportNode (xImportDoc.OwnerDocument.DocumentElement, true); –

1

Może tak:

XmlNode node = ...... // belongs to targetDoc (XmlDocument) 

node.AppendChild(targetDoc.ImportNode(xmlDoc.DocumentElement)); 

Marc

+0

AFAIK, które są wymagane do ** import * węzeł, jeśli nie należy do bieżącej XmlDocument przed możesz go dołączyć. Zobacz moją odpowiedź. – Cerebrus

+0

Tak, wydaje się, że naprawdę musisz wywołać funkcję ImportNode, ale * spowoduje * utworzenie kopii dokumentu Xml ..... –

5

Tak:

XmlNode imported = targetNode.OwnerDocument.ImportNode(otherDocument.DocumentElement, true); 
targetNode.AppendChild(imported); 

myślę, że to tworzy klona dokumentu chociaż.

0

Po uzyskaniu węzła głównego danego dokumentu XML można go dołączyć jako węzeł podrzędny danego węzła. Czy to ma sens?

1

Powiedzmy masz następującą konstrukcję:

następującą strukturę są przechowywane w XMLELEMENT nazwie XMLELEMENT:

</root> 

i następującą strukturę są przechowywane w obiekt XMLNode o nazwie FooNode ;

<foo> 
    <bar>This is a test</bar> 
    <baz>And this is another test</baz> 
</foo> 

Następnie wykonaj następujące czynności:

XmlNode node = doc.ImportNode(FooNode.SelectSingleNode("foo"), true); 
xmlElement.AppendChild(node); 

Mam nadzieję, że ktoś pomoże