492 votos

¿Cómo uno analizar archivos XML?

Los métodos por defecto para tratar con XML en C# parecen increíblemente crudos para mí, llevándome a sospechar que debo estar perdiendo algo en mis búsquedas. ¿Hay un método más simple de analizar archivos XML en C#? Si es así, ¿qué?

303voto

Lukas Šalkauskas Puntos 5750

Es muy sencillo. Yo sé que estos son métodos estándar, pero puede crear su propia biblioteca para lidiar con eso mucho mejor.

Aquí están algunos ejemplos:

XmlDocument xmlDoc= new XmlDocument(); // Create an XML document object
xmlDoc.Load("yourXMLFile.xml"); // Load the XML document from the specified file

// Get elements
XmlNodeList girlAddress = xmlDoc.GetElementsByTagName("gAddress");
XmlNodeList girlAge = xmlDoc.GetElementsByTagName("gAge"); 
XmlNodeList girlCellPhoneNumber = xmlDoc.GetElementsByTagName("gPhone");

// Display the results
Console.WriteLine("Address: " + girlAddress[0].InnerText);
Console.WriteLine("Age: " + girlAge[0].InnerText);
Console.WriteLine("Phone Number: " + girlCellPhoneNumber[0].InnerText);

También, hay algunos otros métodos para trabajar con. Por ejemplo, aquí. Y creo que no hay mejor método para hacer esto, usted siempre necesidad de elegir por sí mismo, lo que es más adecuado para usted.

240voto

Jon Galloway Puntos 28243

Si estás en .NET 3.5 use LINQ to XML .

47voto

David Schmitt Puntos 29384

El uso de un buen Esquema XSD para crear un conjunto de clases con xsd.exe y el uso de un XmlSerializer para crear un árbol de objetos fuera de su XML y viceversa. Si usted tiene algunas restricciones en el modelo, se podría tratar de crear una correspondencia directa entre el modelo de clases y el XML con Xml*Atributos.

Hay un artículo introductorio sobre la Serialización XML en MSDN.

El rendimiento de la punta: la Construcción de un XmlSerializer es caro. Mantener una referencia a su XmlSerializer ejemplo, si usted tiene la intención de analizar/escritura de múltiples archivos XML.

24voto

Simon Steele Puntos 8344

Si está procesando una gran cantidad de datos (varios megabytes), a continuación, desea estar utilizando XmlReader de flujo de analizar el código XML.

Nada más (XPathNavigator, XElement, XmlDocument e, incluso, XmlSerializer si se mantiene la plena generado objeto gráfico) resultará en el uso de memoria alta y también una muy lento el tiempo de carga.

Por supuesto, si usted necesita todos los datos en la memoria de todos modos, entonces puede que no tenga mucha variedad.

17voto

Vinko Vrsalovic Puntos 116138

Uso XmlTextReader, XmlReader, XmlNodeReader y a las System.Xml.XPath de espacio de nombres. Y (XPathNavigator, XPathDocument, XPathExpression, XPathnodeIterator).

Generalmente XPath hace que la lectura de XML más fácil, que es lo que usted podría estar buscando.

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X