valor read obtener nodos nodo leer especifico create c# xml

read - ¿Cómo obtengo el nodo raíz XML con C#?



xmldocument c# (5)

De acuerdo con Jewes, XmlReader es la mejor manera de hacerlo, especialmente si se trabaja con un documento XML más grande o procesando múltiples en un bucle, no es necesario analizar todo el documento si solo necesita la raíz del documento.

Aquí hay una versión simplificada, usando XmlReader y MoveToContent ().

http://msdn.microsoft.com/en-us/library/system.xml.xmlreader.movetocontent.aspx

using (XmlReader xmlReader = XmlReader.Create(p_fileName)) { if (xmlReader.MoveToContent() == XmlNodeType.Element) rootNodeName = xmlReader.Name; }

Sé que es posible obtener cualquier nodo XML usando C # si conoce el nombre del nodo, pero quiero obtener el nodo raíz para poder encontrar el nombre. es posible?

Actualización : estoy usando XMLTextReader para leer en la URL de un archivo y luego cargar eso en el objeto XMLDocument. Básicamente estoy tratando de evitar LINQ a XML, pero si hay otra manera mejor, entonces siempre soy un buen estudiante.


Prueba esto

XElement root = XDocument.Load(fStream).Root;


Tengo la misma pregunta aquí. Si el documento es enorme, no es una buena idea usar XmlDocument. El hecho es que el primer elemento es el elemento raíz, basado en el cual se puede usar XmlReader para obtener el elemento raíz. Usar XmlReader será mucho más eficiente que usar XmlDocument ya que no requiere cargar todo el documento en la memoria.

using (XmlReader reader = XmlReader.Create(<your_xml_file>)) { while (reader.Read()) { // first element is the root element if (reader.NodeType == XmlNodeType.Element) { System.Console.WriteLine(reader.Name); break; } } }


El nodo raíz es la propiedad DocumentElement de XmlDocument

XmlElement root = xmlDoc.DocumentElement

Si solo tiene el nodo, puede obtener el nodo raíz

XmlElement root = xmlNode.OwnerDocument.DocumentElement


string rootNode = null; XmlDocument XmlDoc = new XmlDocument(); XmlDoc.Load(response.GetResponseStream()); rootNode = XmlDoc.ChildNodes(0).Name;