我正在用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>
使用XmlReader解析大型XML文档。XmlReader提供对XML数据的快速,仅转发,非缓存访问。(仅向前意味着您可以从头到尾读取XML文件,但不能在文件中向后移动。)XmlReader使用少量内存,这等效于使用简单的SAX阅读器。
XmlReader
using (XmlReader myReader = XmlReader.Create(@"c:\data\coords.xml")) { while (myReader.Read()) { // Process each node (myReader.Value) here // ... } }
您可以使用XmlReader来处理最大2 GB的文件。
参考:如何使用Visual C#从文件读取XML