从 XmlDocument 到 XmlReader .Net
Posted
技术标签:
【中文标题】从 XmlDocument 到 XmlReader .Net【英文标题】:From XmlDocument To XmlReader .Net 【发布时间】:2012-02-19 23:00:18 【问题描述】:根据用户的建议回答了我的问题,我正在尝试将我的 XmlDocument 代码转换为 XmlReader 代码,但我遇到了一些麻烦。
<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)
?????
【问题讨论】:
坦率地说,尝试(稳健地)使用 XmlReader 读取 xml 非常困难。你想在这里做什么?你的目标是什么? xml 的大小是多少? @MarcGravell 正如我在 xml 代码中所写,xml 的大小约为 10000 行。我正在阅读放入 List. 的 xml e XmlDocument 出现什么问题?你试过 XmlSerializer 吗? XElement? @MarcGravell 问题是我需要在内存中保存这个对象列表,它们大约是 10000。正如我在这篇文章中看到的 nearinfinity.com/blogs/joe_ferner/…,XmlReader 的性能更好 @MarcGravell 问题出在 Ram 和 PC 上。它们是(大部分)具有 512 Mb Ram 专用的虚拟机,我会提高性能。 【参考方案1】:如果您对 xml 文件执行只读操作,那么您可以使用 XmlReader
,但正如 @Marc Gravell 指出的那样,这很困难。
在这种情况下,我将创建一个使用XmlReader
包装XPathDocument
的类。然后我创建一个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?
【讨论】:
好的,如果您还有其他问题,请告诉我。我经常使用这种方法对 xml 文件进行只读访问。【参考方案2】:你可以使用
XmlReader xmlReader = new XmlNodeReader(xmlDoc);
见:http://blog.jongallant.com/2007/01/convert-xmldocument-to-xmlreader.html
【讨论】:
很遗憾链接已损坏以上是关于从 XmlDocument 到 XmlReader .Net的主要内容,如果未能解决你的问题,请参考以下文章
c# 中,如何读取XML文件,并将读取到的内容显示到TreeView中
C#将多个XMLNode或XMLNodeList从一个XMLDocument复制到另一个XMLDocument