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

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

我客观地说,最大的extract.xml可能会上来大约150兆字节,所以显然DOM解析器是我一直在试图决定在XmlSerializerXSD.EXE之间生成的绑定–OR – XmlReader和手工制作的对象图。

或者也许有一个更好的方式,我还没有考虑过?喜欢XLINQ,还是???

请任何人指导我?特别是关于任何给定方法的存储器效率。如果不是,我将不得不“原型”的解决方案和配置他们并排。

我有点在.NET中的生虾。任何指导将非常感谢。

感谢您。 Keith。

示例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>
最佳答案
使用XmlReader来解析大型XML文档。 XmlReader提供对XML数据的快速,只向前,非缓存访问。 (仅向前转换表示您可以从头到尾读取XML文件,但不能在文件中向后移动。)XmlReader使用少量内存,相当于使用简单的SAX读取器。

    using (XmlReader myReader = XmlReader.Create(@"c:\data\coords.xml"))
    {
        while (myReader.Read())
        {
           // Process each node (myReader.Value) here
           // ...
        }
    }

您可以使用XmlReader来处理大小高达2 GB的文件。

参考:How to read XML from a file by using Visual C#

转载注明原文:在C#代码中解析(大)XML的最好方法是什么? - 代码日志