问题标签 [iterparse]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
416 浏览

python - 在我可以捕获数据之前清除 iterparse 元素

我正在尝试使用 Python 使用 cElementTree 和 iterparse 解析大型 XML 文件(27GB)。我能够提取所有标签,但由于某种原因,没有检索到任何元素文本(它总是显示“无”)。我检查了文档和 StackOverflow 但无济于事。作为最后的手段,我尝试使用 lxml 进行解析并且它可以工作,但如果可能的话,我更愿意在 cElementree 上解决它。更新:当我注释掉 elem.clear() 行时,它显示正在解析的数据,但现在我试图弄清楚为什么 clear() 方法在数据打印之前擦除数据(最终我想把数据到一个单独的数据结构,如数据库)。我假设我需要清除数据,以便在文件解析期间不会最大化内存。这是其中之一吗?

使用从文件中提取的较小样本,我仍然遇到相同的错误。XML 文件看起来像这样(尽管有更多条目):

这是行为不端的代码片段:

我越来越

为什么 elem.clear() 会擦除文本,即使看起来应该首先打印?有什么建议么?

0 投票
2 回答
1563 浏览

python - 使用 python 增量解析大型维基百科转储 XML 文件

目标是从 Wikipedia DUMP(70Gb 文件)中读取所有……内容。这不可能加载到内存中,因此我尝试逐步解析文件并从中获取一些值。然而我刚刚写的脚本并没有打印任何东西,并立即占据了我所有的记忆。

这是代码:

当这个脚本应用在一个小的 xml 文件中时,它会打印来自请求的 xpath 的值。

但是,当应用于完整文件时,没有任何反应。

这是来自维基百科转储的相同行

以前有人这样做过吗?知道如何有效地解析这个巨大的转储吗?有没有以前做过的包/库?我不想重新发明轮子。

0 投票
2 回答
168 浏览

python - 使用 lxml 进行迭代解析期间无法识别的标签

我对 lxml 有一个非常奇怪的问题,我尝试使用 iterparse 解析我的 xml 文件,如下所示:

它非常简单并且工作得几乎完美,很快它就会通过我的 xml 文件,如果它是一个元素,它会检查语言属性是“en”还是“de”,然后它会检查是否有一个孩子,如果是,它会写它的值到文件中

文件中有一个 <seg> 似乎不存在,在执行 elem.find('seg') 时返回 None,您可以在此处看到它,并在下面的上下文中找到它<seg>! keine Spalten und Ventile</seg>

我不明白为什么这个看起来很好的标签会产生问题(因为我不能使用它的 .text),请注意其他所有标签都很好

0 投票
2 回答
633 浏览

xml - 如何使用 Python 中的 ElementTree 删除带有 iterparse 的 XML 部分?

我有多个大文件需要导入并遍历它们——它们都是 xmls 并且具有相同的树结构。结构是这样的,除了 ID 之外还有一些额外的文本,所以在 Start 下有更多的子元素标签:我想做的是输入一个我知道是错误的 Id 列表,然后从整个 XML 文件。一份报告在两个“T”之间。

到目前为止我所拥有的:

因此,上面的代码显然不起作用,因为根是以 Header 开头的整个 xml 文件,并且它无法准确找到我所指的删除子元素,因为它的父级是 Header3 而不是 Header。

所以所需的输出将是:

展望未来,我要输入删除的不是单个值,而是数千个值,所以要成为一个列表,我只是认为以这种方式表示问题更容易。任何帮助表示赞赏。

0 投票
1 回答
88 浏览

python - Python lxml iterparse按属性大xml文件排序

我有一个大的 XML 文件,我正在尝试为每个程序订购图标,我想按宽度属性中的值降序排列图标,我设法删除了某些不需要但我的图标我不确定如何订购图标,任何帮助将不胜感激。

这是我用来删除我不想要的图标的代码,但我不确定如何才能订购它们。我正在使用 iterparse,因为读取整个文件会占用大量内存。

当前删除代码:

XML 文件:

0 投票
1 回答
620 浏览

python - 如何使用 ElementTree 在带有命名空间的 XML 文件中查找和编辑标签

我想在我的 XML 文档中找到特定的标签并编辑它们的文本或属性。我的 XML 文件包含命名空间(我正确理解为嵌套命名空间)。我想为此目的使用的工具是 ElementTree。我设法通过 读取 XML 文件iterparse,但是我不知道如何保存已编辑的 XML,因为iterparse没有write元素。我需要一种解决方案来读取 XML 文件parse并剥离其命名空间和嵌套命名空间,或者一种保存迭代解析文件的方法。

对于这种情况,让我们编辑“评级”标签文本。

但是在这种情况下,XML 文件保持不变。

这是 XML 文件:

0 投票
0 回答
286 浏览

python - 使用 lxml etree iterparse 解析大于 3gb 的 Xml 文件

我无法使用 lxml 树解析巨大的 XML 文件。我从我的研究中了解到,lxml iterparse 会加载 xml 文件,直到它获得它正在寻找的标签。这是我的代码片段:-

它甚至没有达到打印声明并且正在被杀死。在这件事上有什么帮助吗?

0 投票
0 回答
83 浏览

python - lxml.etree iterparse 不接受 HDFS 文件路径

我想使用 package.json 中的iterparse函数处理分布在 HDFS 文件系统中的巨大 xml 文件lxml.etree

我已经在本地和亚马逊的 EMR 集群上尝试过:

  • 本地:我的 xml 文件的地址是hdfs://localhost:9000/user/hadoop/history.xml
  • EMR 集群:地址是/user/hadoop/history.xml

在这两种情况下,运行我的简单 python 程序都会崩溃并出现以下错误

这是我的python程序

0 投票
1 回答
249 浏览

python-2.7 - 使用 Python 2.7 将文件作为参数绕过 lxml iterparse 函数的字符串

我正在使用 lxml.tree 函数 iterparse() 对 xml 树进行交互。

这适用于输入文件

但是,我想在文件中使用包含相同信息的字符串。

我尝试使用

但这会导致以下错误:

有谁知道我该如何解决这个错误?

提前致谢。

0 投票
1 回答
203 浏览

python - 有没有办法使用 iterparse lxml 跳过节点/元素?

有没有办法使用 lxml iterparse 跳过一个元素而不检查标签?以这个 xml 为例:

如果我关心tag1and tag4,检查tag2andtag3会吃掉一些时间。如果文件不大,那并不重要,但如果我有一百万<sample>个节点,如果我不必检查tag2nd ,我可以减少一些搜索时间tag3。他们总是在那里,我从不需要他们。

在 lxml 中使用 iterparse