我有一个200MB的文件,我需要循环并检索所有唯一的xpath。有了这种设置:
<?xml version="1.0" encoding="utf-8"?>
<invoice>
<id>123</id>
<newRa elem="0">
<createD>20150519</createD>
<modD>12345</modD>
</newRa>
<total>123.99</total>
</invoice>
<invoice>
<id>456</id>
<newRa elem="0">
<createD>20150518</createD>
<modD>12345</modD>
</newRa>
<total>456.99</total>
</invoice>
<invoice>
<id>789</id>
<newRa elem="0">
<createD>20150517</createD>
<modD>12345</modD>
</newRa>
<total>789.99</total>
</invoice>
我想要浏览每个发票一次,获取一个唯一的xpath列表,并将它们存储在stringcollection中。
当我遍历所有发票元素时,我想在遇到新的xpath时仅添加到stringcollection。
由于某些限制(即VisualStudio2005,.NET 2.0 Framework)无法使用LINQ以及其他许多可以轻松解决此问题的功能,因此难以理解这一点。
答案 0 :(得分:2)
对于此类文件,您应该基于XmlTextReader创建一个解析器类。它是一个拉解析器实现。
使用XmlTextReader,您必须逐节点读取整个XML节点并提取任务所需的内容。在这里,您必须通过跟踪嵌套元素和位置计数来自己构建XPath查询字符串。