我正在用 C# 编写一个 GIS 客户端工具,用于从服务器检索基于 GML 的 XML 架构(示例如下)中的“特征”。提取限制为 100,000 个特征。我估计最大的 extract.xml
我正在用 C# 编写一个 GIS 客户端工具,用于从服务器检索基于 GML 的 XML 架构(以下示例)中的“特征”。提取限制为 100,000 个特征。
我估计最大的 extract.xml 可能会达到 150 兆字节左右,因此显然 DOM 解析器已经不行了,我一直在尝试在 XmlSerializer 和 XSD.EXE 生成的绑定 --OR-- 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>
用于 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) 的文件。