阅读非常大的xml文档的一部分

本文关键字:xml 一部分 文档 非常 | 更新日期: 2023-09-27 17:58:04

我尝试使用linq到xml来读取非常大的xml文件(407MB):

XDocument xdoc = XDocument.Load(adress);

(地址-是文件的路径)但我得到了内存不足的例外,因为事实上(正如我所想的)收集变得超过2GB。Xml文件如下所示:

<lemmata>
<lemma id="4694" rev="4694"><l t="аддукторен"><g v="ADJS"/></l><f t="аддукторен"><g v="masc"/><g v="sing"/></f><f t="аддукторна"><g v="femn"/><g v="sing"/></f><f t="аддукторно"><g v="neut"/><g v="sing"/></f><f t="аддукторны"><g v="plur"/></f></lemma>
    <lemma id="4695" rev="4695"><l t="аддукторнее"><g v="COMP"/></l><f t="аддукторнее"></f><f t="аддукторней"><g v="V-ej"/></f><f t="поаддукторнее"><g v="Cmp2"/></f><f t="поаддукторней"><g v="Cmp2"/><g v="V-ej"/></f></lemma>
    <lemma id="4696" rev="4696"><l t="аддукция"><g v="NOUN"/><g v="inan"/><g v="femn"/></l><f t="аддукция"><g v="sing"/><g v="nomn"/></f><f t="аддукции"><g v="sing"/><g v="gent"/></f><f t="аддукции"><g v="sing"/><g v="datv"/></f><f t="аддукцию"><g v="sing"/><g v="accs"/></f><f t="аддукцией"><g v="sing"/><g v="ablt"/></f><f t="аддукциею"><g v="sing"/><g v="ablt"/><g v="V-ey"/></f><f t="аддукции"><g v="sing"/><g v="loct"/></f><f t="аддукции"><g v="plur"/><g v="nomn"/></f><f t="аддукций"><g v="plur"/><g v="gent"/></f><f t="аддукциям"><g v="plur"/><g v="datv"/></f><f t="аддукции"><g v="plur"/><g v="accs"/></f><f t="аддукциями"><g v="plur"/><g v="ablt"/></f><f t="аддукциях"><g v="plur"/><g v="loct"/></f></lemma>
<lemma>.....</lemma>
</lemmata>

因此,有许多因素。我有机会按照元素集合不超过最大大小的顺序只阅读引理元素的一部分吗?或者还有其他方法可以读取此文件?感谢

阅读非常大的xml文档的一部分

查看XmlReader类。它允许您快速地向前读取元素,这样您就可以找到您想要的元素,而无需将整个文件拖入内存。