2008-11-12 16 views

Respuesta

8

No se ha probado, pero ¿qué tal a través de un XmlDocument:

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

alternativa (desde el cmoment), algo así como:

doc.LoadXml(reader.ReadOuterXml()); 

Pero en realidad no soy un fan de eso .. . obliga a un paso adicional xml-parse (una de las operaciones más costosas de la CPU) sin una buena razón. Si el original está siendo Glitchy, entonces tal vez considerar una sub-lector:

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

cambie la línea 2 a doc.LoadXml (reader.ReadOuterXml()); entonces yo puedo aceptar Gracias. –

+1

¿Cómo responde esto la pregunta? Esto leerá todo el xml en XmlDocument y devolverá el elemento raíz solamente. –

+2

@Sunny; el elemento raíz contiene todos los demás elementos como descendientes –

2

Asumiendo que usted tiene XmlDocument, donde tiene que unir el XmlElement recién creado:

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

Desde el docs: Do no instanciar un XmlElement directamente; en su lugar, use métodos como CreateElement.

Cuestiones relacionadas