猿问

在C#代码中解析(大)XML的最佳方法是什么?

我正在用C#语言编写GIS客户端工具,以从服务器中检索基于GML的XML模式(以下示例)中的“功能”。提取限制为100,000个功能。


我guestimate,最大的extract.xml可能起床约150兆字节,所以显然DOM解析器是出我一直在试图决定之间的XmlSerializer和XSD.EXE生成绑定-或- 的XmlReader和手工制作的对象图。


或者,也许还有一种我还没有考虑过的更好的方法?像XLINQ还是????


有人可以指导我吗?特别是关于任何给定方法的存储效率。如果不是这样,我将不得不“原型化”这两个解决方案并并排介绍它们。


我对.NET有点不了解。任何指导将不胜感激。


感谢您。基思


XML示例 -最多100,000个,每个功能最多234,600个坐标。


<feature featId="27168306" fType="vegetation" fTypeId="1129" fClass="vegetation" gType="Polygon" ID="0" cLockNr="51598" metadataId="51599" mdFileId="NRM/TIS/VEGETATION/9543_22_v3" dataScale="25000">

  <MultiGeometry>

    <geometryMember>

      <Polygon>

        <outerBoundaryIs>

          <LinearRing>

            <coordinates>153.505004,-27.42196 153.505044,-27.422015 153.503992 .... 172 coordinates omitted to save space ... 153.505004,-27.42196</coordinates>

          </LinearRing>

        </outerBoundaryIs>

      </Polygon>

    </geometryMember>

  </MultiGeometry>

</feature>


郎朗坤
浏览 797回答 3
3回答

蝴蝶刀刀

总结一下,对于任何在google中找到此主题的人来说,答案都更加明显。在.NET 2之前,XmlTextReader是标准API(thanx Mitch ;-)中可用的内存效率最高的XML解析器。.NET 2引入了XmlReader类,它再次变得更好。它是一个仅转发元素的迭代器(有点像StAX解析器)。(谢谢脑;-)记住,小子,任何XML实例都有可能超过500k,不要使用DOM!
随时随地看视频慕课网APP
我要回答