gpt4 book ai didi

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

转载 作者:IT王子 更新时间:2023-10-29 03:45:42 25 4
gpt4 key购买 nike

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

我估计最大的 extract.xml 可能会达到 150 MB 左右,所以显然 DOM 解析器已经用完了,我一直试图在 XmlSerializer 之间做出决定。和 XSD.EXE生成的绑定(bind) --OR-- XmlReader和手工制作的对象图。

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

请问有人可以指导我吗?特别是关于任何给定方法的内存效率。如果不是,我将不得不对这两个解决方案进行“原型(prototype)设计”并并排分析它们。

我有点像 .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 的文件。

引用:How to read XML from a file by using Visual C#

关于c# - 在 C# 代码中解析(大)XML 的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/676274/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com