2009-05-24 18 views
13

que desea guardar y cargar mis datos XML utilizando XmlReader. Pero no sé cómo usar esta clase. ¿Me puede dar un código de muestra para comenzar?¿Cómo usar la clase XmlReader?

+3

71.000 resultados de http://www.google.ca/search?hl=en&q=xmlreader+example – ChrisW

+26

sí, pero eso es lo que es para stackoverflow, también! – Unsliced

+1

XmlReader es el lector utilizado por POCO ENTIDADES tt para leer el archivo edmx. Así que para continuar con su API, y usarla correctamente, y no analizar el archivo emdx yo solo necesito usar XmlReader. –

Respuesta

8

Personalmente me han cambiado lejos de XMLReader a System.XML.Linq.XDocument para administrar mis archivos de datos XML. De esta manera, puedo extraer datos de xml fácilmente en objetos y administrarlos como cualquier otro objeto en mi programa. Cuando termine de manipularlos, puedo guardar los cambios nuevamente en el archivo xml en cualquier momento.

 //Load my xml document 
     XDocument myData = XDocument.Load(PhysicalApplicationPath + "/Data.xml"); 

     //Create my new object 
     HelpItem newitem = new HelpItem(); 
     newitem.Answer = answer; 
     newitem.Question = question; 
     newitem.Category = category; 

     //Find the Parent Node and then add the new item to it. 
     XElement helpItems = myData.Descendants("HelpItems").First(); 
     helpItems.Add(newitem.XmlHelpItem()); 

     //then save it back out to the file system 
     myData.Save(PhysicalApplicationPath + "/Data.xml"); 

Si quiero utilizar estos datos en un conjunto de datos de fácil administración, puedo vincularlo a una lista de mis objetos.

 List<HelpItem> helpitems = (from helpitem in myData.Descendants("HelpItem") 
        select new HelpItem 
        { 
         Category = helpitem.Element("Category").Value, 
         Question = helpitem.Element("Question").Value, 
         Answer = helpitem.Element("Answer").Value, 
        }).ToList<HelpItem>(); 

Ahora se puede pasar alrededor y manipulado con cualquiera de las funciones inherentes de mi clase de objeto.

Para mayor comodidad de mi clase tiene una función para crear a sí mismo como un nodo XML.

public XElement XmlHelpItem() 
    { 
     XElement helpitem = new XElement("HelpItem"); 
     XElement category = new XElement("Category", Category); 
     XElement question = new XElement("Question", Question); 
     XElement answer = new XElement("Answer", Answer); 
     helpitem.Add(category); 
     helpitem.Add(question); 
     helpitem.Add(answer); 
     return helpitem; 
    } 
+4

Si necesito consultar XML como si estuviera consultando otros datos, estoy de acuerdo. Pero, para la validación simple o la búsqueda solo de reenvío, XmlReader es la mejor opción porque es más eficiente. – Josh

+13

Tenemos un problema serio cuando una pregunta titulado "Cómo utilizar la clase XmlReader" tiene una respuesta aceptada que no se acercan a responder a la pregunta. Estoy votando para eliminar o cambiar el nombre de la pregunta. –

+5

Esta no es una buena solución si está leyendo documentos XML grandes. XMLReader te permite transmitirlo y leerlo en pedazos. – richard

7

se debe utilizar el método de Createnew en lugar de utilizar, ya que es un XmlReaderabstract class usando the Factory pattern.

var xmlReader = XmlReader.Create("xmlfile.xml"); 
+0

Esto debe ser aceptado como la respuesta real a esta pregunta. –

12

MSDN tiene un ejemplo sencillo para empezar here.

Si le interesa leer y escribir documentos XML, y no solo el uso específico de la clase XmlReader, está a nice article covering a few of your options here.

Pero si lo que desea es empezar a trabajar y jugar, intente esto:

XmlReaderSettings settings = new XmlReaderSettings(); 
settings.IgnoreWhitespace = true; 
settings.IgnoreComments = true; 
XmlReader reader = XmlReader.Create("file.xml", settings); 
+0

Siempre me sorprende cuando me encuentro con pequeños fragmentos de código que resuelven mi problema y que son fragmentos que no pude encontrar en cualquier lugar * * incluyendo el sitio de la EM. Gracias, este me salvó. –

Cuestiones relacionadas