Leer archivo XML en XmlDocument

103

Soy muy nuevo en C #. Tengo un archivo XML (text.xml). Quiero leer eso XmlDocumenty almacenar el flujo en una variable de cadena.

AJP
fuente
1
Gracias a los dos por su ayuda.
AJP

Respuestas:

169

Utilice el XmlDocument.Load()método para cargar XML desde su archivo. Luego use la XmlDocument.InnerXmlpropiedad para obtener una cadena XML.

XmlDocument doc = new XmlDocument();
doc.Load("path to your file");
string xmlcontents = doc.InnerXml;
Timur Sadykov
fuente
2
XmlDocumentno contiene una definición de Load.
Matt Clark
Rechacé todos estos porque ninguno de ellos funcionó. Resulta que estoy desarrollando para WindowsRT, y Compact .NET Framework tiene muchas de estas características eliminadas. Incluyendo muchos de los que necesito ... Como XmlDocument.Load()y y el constructor StreamReaderStreamReader(filePath)
Matt Clark
11
@MattClark: Siento su dolor, he estado luchando con los caprichos y las limitaciones de la FQ durante dos años, pero esa no es razón para rechazarlo. El OP no especificó CF, por lo que no hay razón para que los respondedores tomen en consideración CF.
B. Clay Shannon
17

Si su versión .NET es más reciente que la 3.0, puede intentar usar en System.Xml.Linq.XDocumentlugar de XmlDocument. Es más fácil procesar datos con XDocument.

Pupper
fuente
3
Y aquí se explica cómo cargar un archivo usando XDocument: stackoverflow.com/questions/670563/linq-to-read-xml
Brian Leeming
6

Espero que no te importe Xml.Linq y .net3.5 +

XElement ele = XElement.Load("text.xml");
String aXmlString = ele.toString(SaveOptions.DisableFormatting);

Dependiendo de lo que le interese, probablemente pueda omitir toda la parte var de 'cadena' y simplemente usar objetos XLinq

Abdul Hfuda
fuente
6
XmlDocument doc = new XmlDocument();
   doc.Load("MonFichierXML.xml");

    XmlNode node = doc.SelectSingleNode("Magasin");

    XmlNodeList prop = node.SelectNodes("Items");

    foreach (XmlNode item in prop)
    {
        items Temp = new items();
        Temp.AssignInfo(item);
        lstitems.Add(Temp);
    }
user3626085
fuente
1
var doc = new XmlDocument(); 
doc.Loadxml(@"c:\abc.xml");
Ventas Juliano
fuente
Tenga en cuenta que la pregunta también requiere almacenar el contenido XML en una cadena.
minutos
XmlDocument.LoadXml()carga una cadena XML. Para cargar un archivo XML por nombre, utilícelo XmlDocument.Load()como sugiere la respuesta aceptada.
François Beaune