.net - 从XmlDocument到XmlReader .Net

标签 .net xmldocument xmlreader

在用户回答了我的问题之后,我想将我的XmlDocument代码转换为XmlReader代码,但是遇到了一些麻烦。

这是XML(从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

这是我的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;

现在,在XmlReader中转换时遇到了一些麻烦,我尝试了许多代码,但无法处理。
using (XmlReader reader = new XmlTextReader("http://myUrl.com/list.php"))
         { 
          if (reader.NodeType == XmlNodeType.Element) 
           ?????

最佳答案

如果您要对xml文件执行只读操作,则可以使用XmlReader,但正如@Marc Gravell指出的那样,这很困难。

在这种情况下,我将创建一个使用XPathDocument包装XmlReader的类。然后,我创建一个XPathNavigator来读取数据。这是一个例子:

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;
    }
}

如上所述,然后可以将数据读取封装到关联的对象模型中。您可以在我对这个问题的回答中看到一些细节:

How do I manipulate an XML document one parent element at a time?

关于.net - 从XmlDocument到XmlReader .Net,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9025100/

相关文章:

c# - XmlReader 异常处理 - IEnumerable

c# - 如何在C#中访问Form类?

c# - 使用冒号读取 XML (:)

.net - 如何使用特定日期的 Sitecore 项目进行 Lucene 搜索?

c# - 您如何测试抛出异常的具体原因?

javascript - 从 xmldocument 创建 javascript 文档

c# - 使用 XmlReader 处理命名空间

.net - XmlReader - 将当前节点读取为字符串

.net - 跨平台 SSO - 从哪里开始?

c# - 为什么 DynamicObject 类中的方法不是通用的?