简体   繁体   English

阅读了很大的xml文档的一部分

[英]read part of very big xml document

I try to use linq to xml to read very big xml file (407 MB): 我尝试使用linq到xml来读取很大的xml文件(407 MB):

XDocument xdoc = XDocument.Load(adress);

(adress - is a path to file) But I get out of memory exception due to the fact (as I suppose) that collection becomes more than to 2GB. (地址-是文件的路径)但是由于(我想)集合超过2GB的事实,导致内存不足异常。 Xml file looks like that: 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>

So, there are many elements. 因此,有很多要素。 Do I have an opportunity to read just a part of lemma elements in order collection of elements don't exceed the maximum size? 我是否有机会仅阅读一部分引理元素,以使元素集合不超过最大大小? Or there are other ways to read this file? 还是有其他方法可以读取此文件? Thank you 谢谢

Have a look at the XmlReader class. 看看XmlReader类。 It allows you to forward read through the elements pretty quickly so that you can find the one you want, without pulling the whole file into memory. 它使您可以快速转发所有元素,从而可以找到所需的元素,而无需将整个文件拉入内存。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM