net from convert .net xmldocument xmlreader

.net - from - xmldocument load c#



De XmlDocument a XmlReader.Net (2)

Después de recibir un consejo de un usuario que respondió a mi pregunta, estoy intentando convertir mi código XmlDocument a código XmlReader, pero tengo algunos problemas.

Esto es XML (generado desde la página php-mysql)

<row> <idLink>64</idLink> <idHost>3</idHost> <url>http://www.google.com</url> </row> <row> <idLink>68</idLink> <idHost>4</idHost> <url>http://www.bing.com</url> </row> ..... until about 10000 rows

Este es mi código XmlDocument:

xmlDoc.Load("http://www.myUrl.com/list.php"); if (xmlDoc.DocumentElement != null){ foreach (XmlNode node in xmlDoc.DocumentElement) { if (node.Name == "row") { list.Add(new Links { idLink = Convert.ToInt32(node.ChildNodes[0].InnerText), idHost = Convert.ToInt32(node.ChildNodes[1].InnerText), url = node.ChildNodes[2].InnerText }); } } return list;

Ahora tengo algunos problemas para convertir en XmlReader, probé muchos códigos pero no puedo manejarlo.

using (XmlReader reader = new XmlTextReader("http://myUrl.com/list.php")) { if (reader.NodeType == XmlNodeType.Element) ?????



Si está realizando operaciones de solo lectura en un archivo xml, puede usar XmlReader pero como lo señala @Marc Gravell es difícil.

En esta situación, crearé una clase que envuelva un XPathDocument con un XmlReader . Entonces creo un XPathNavigator para leer los datos. Aquí hay un ejemplo:

public class MyXmlReader { public MyXmlReader(string xml) { StringReader sReader = new StringReader(xml); XPathDocument xml = new XPathDocument(XmlReader.Create(sReader)); xmlNav = xml.CreateNavigator(); } private XPathNavigator xmlNav = null; public MyDataModel ReadMyDataModel() { MyDataModel model = new MyDataModel(); model.Read(xmlNav); return model; } }

Como se muestra arriba, la lectura de los datos se puede encapsular en un modelo de objeto asociado. Puedes ver algunos detalles en mi respuesta a esta pregunta:

¿Cómo manipulo un documento XML un elemento padre a la vez?