2008-11-12 5 views

Odpowiedz

8

nie testowano, ale jak o poprzez XmlDocument:

XmlDocument doc = new XmlDocument(); 
    doc.Load(reader); 
    XmlElement el = doc.DocumentElement; 

Alternatywnie (od cmoment), coś jak:

doc.LoadXml(reader.ReadOuterXml()); 

Ale rzeczywiście nie jestem fanem tego .. zmusza dodatkowy xml-parsowanie (jedną z bardziej kosztownych procesorów) bez ważnego powodu. Jeśli oryginał jest bycie glitchy, to może rozważyć sub-czytelnika:

using (XmlReader subReader = reader.ReadSubtree()) 
    { 
     XmlDocument doc = new XmlDocument(); 
     doc.Load(subReader); 
     XmlElement el = doc.DocumentElement; 
    } 
+0

zmiana linii 2 na doc.LoadXml (reader.ReadOuterXml()); więc mogę zaakceptować. Dzięki. –

+1

W jaki sposób odpowiada na pytanie? Spowoduje to odczytanie całego xml na XmlDocument i zwróci tylko element główny. –

+2

@Sunny; element główny zawiera wszystkie pozostałe elementy jako potomkowie –

2

Zakładając, że masz XmlDocument, gdzie trzeba dołączyć nowo utworzony XMLELEMENT:

XmlElement myElement; 
myXmlReader.Read(); 
if (myXmlReader.NodeType == XmlNodeType.Element) 
{ 
    myElement = doc.CreateElement(myXmlReader.Name); 
    myElement.InnerXml = myXmlReader.InnerXml; 
} 

Z docs: Nie nie tworzy bezpośrednio XmlElement; zamiast tego użyj metod takich jak CreateElement.