问题标签 [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 投票
1 回答
6771 浏览

python - Python:XPath 在 ElementTree 中不可用

我正在尝试使用iterparse()of解析 iTunes 播放列表,ElementTree但出现以下错误:

代码如下:

我做错了什么?文件太大,所以iterparse()无论如何我都必须使用。

0 投票
1 回答
1182 浏览

python - iterparse 无法解析字段,而其他类似的都可以

我使用 Pythoniterparse来解析 nessus 扫描的 XML 结果(.nessus 文件)。解析在意外记录上失败,但类似的记录已被正确解析。

XML 文件的一般结构是很多记录,如下所示:

换句话说,很多主机(ReportHost)有很多要报告的项目(ReportItem),而后者有几个特征(foobar)。我将着眼于为每个项目生成一个具有其特征的行。

解析在文件中间的一行中失败(foo在这种情况下cvss_base_score

而大约 200 条类似的行已被解析而没有问题。

相关的代码如下——它设置了上下文标记(inReportHostinReportEvent告诉我我所在的 XML 文件的具体位置,并根据上下文分配或打印一个值)

cvss有时具有 None 值(在cvss = elem.text分配之后),即使相同的条目已在文件中较早地被正确解析。

如果我在分配下面添加一些类似的东西

然后解析许多进一步cvss分配它们的正确值(而其他一些是无)。

当采取<ReportHost>...</reportHost>which 导致错误的解析并通过程序运行它时 - 它工作正常(即按预期cvss分配)。9.3

我迷失在我的代码中出现错误的地方,因为有大量相似的记录,有些是正确处理的,有些是不正确的(有些记录是相同的,但处理方式仍然不同)。我也找不到有关失败记录的任何具体信息-早晚相同的记录都可以。

0 投票
1 回答
5612 浏览

python - GAE Python LXML - 属性对象的 XMLSyntaxError 规范强制值

我在 Python 上使用 Google App Engine 并尝试获取 GZipped XML 文件并使用 LXML 的 iterparse 对其进行解析。我使用来自 lxml.de 的示例来创建以下代码:

当我运行它时,它给了我以下错误:

这个错误是什么意思?我猜测 XML 文件格式不正确,但是我不知道在哪里寻找问题。任何帮助,将不胜感激!

0 投票
1 回答
98 浏览

python - 在保持上下文的同时使用 iterparse 的最佳实践?

我提出关于 iterparse 一般用法的问题(以及JF Sebastian的回答)之后,我将重新组织我的代码以解析 nessus XML 结果文件。引用前面的问题,文件结构是

换句话说,很多主机(ReportHost)有很多要报告的项目(ReportItem),而后者有几个特征(foobar)。我将着眼于为每个项目生成一行,其特点是:

我了解如何从 XML 文件中提取给定的文件(这实质上是我之前问题的答案)。我需要将这些提取的字段保留在上下文中(= 我需要知道它们ReportHost与哪些ReportItem相关)。我的想法是使用一个标记,一个变量会告诉我我是在 aReportHost还是ReportItemblock 中并从那里决定 ( if inReportHost: ...) - 不过,我担心这不是使用 iterparse 导航 XML 的正确方法。

是否有“最佳实践”文件可以参考?

编辑:改进后的评论示例

0 投票
1 回答
507 浏览

xml - 使用 iterparse 时出现 XML 语法错误

我正在用 Python 解析一个大型 XML 文件。大型 XML 文件的相关部分如下:

我正在使用该iterparse模块来解析这个 XML。

我收到以下带有以下跟踪的 ​​XMLSyntaxError

一些重要的点——

[1] 必须使用该iterparse模块,因为 XML 的大小为 3GB(或更多)。

[2] 我只提供了引发语法错误的 XML 文件部分。

我的问题如下:

[1] 我可以自动修复这个问题吗?如果是这样,怎么做?

[2] 我可以手动解决这个问题吗?如果是这样,怎么做?

[3] 我可以忽略这个问题并继续解析我的大型 XML 文件吗?如果是这样,怎么做?

我看过以下资源:

在解析大型 XML 文件时,我应该如何处理 Python 的 lxml 中的 XMLSyntaxError?

忽略 Python (iterparse) 中的编码错误?

有没有办法在无效的 Char 值上恢复 iterparse?

但没有人能回答我的问题。

0 投票
1 回答
3708 浏览

python - 使用 Python iterparse 检索 XML 属性值

我试图找出如何在 Python (2.7) 中使用 cElementTree iterparse 检索 XML 属性值。我的 XML 是这样的:

我的代码是这样的:

我正在处理来自标准输入的大数据。我没有运气弄清楚这一点。有人可以告诉我如何(最佳?)这样做吗?

0 投票
1 回答
388 浏览

iterparse - 使用默认命名空间解析 xml 时,Iterparse 返回空的可迭代对象

我正在使用 iterparse 解析一个 xml 文档。

  • 预期结果:我看到了一些end事件
  • 实际结果:什么都没发生

我尝试了几件事:

  • 如果我从 xml 中删除命名空间,它工作正常。
  • 如果我使用带有前缀的命名空间,xlmns:t="blah.com"它也可以正常工作。
  • 删除它tag="foo"也可以正常工作。

但是,我想同时使用基本标记和默认命名空间。这是 iterparse 的错误吗?我做错了什么吗?

编辑:编辑代码以使其可复制粘贴而不会出现识别错误。

0 投票
0 回答
222 浏览

python - lxml iterparse标签参数和内存消耗

我正在处理大型 xml 文件lxml.iterparse。这很好用,但是随着我的文件最近变大了很多,我发现 iterparse 行为填满了我的记忆。考虑下面的代码,它编写了一个包含 300000 个元素和 300000 个elem元素和 300000个other_elem元素的文件:

然后,我使用以下内容仅解析elem(并且对它们不执行任何操作),同时不时打印内存使用情况:

输出显示内存使用率很低,直到最后突然跳转。当我尝试读取不包含other_elems 的文件时,此行为消失。一种较慢的解决方法,它tag忽略了 iterparse 的参数,而是使用 if 构造来测试它会释放内存,可能是因为它可以el.clear()对不匹配的元素执行操作。因此,我的问题不是如何解决这个问题,而是为什么 iterparse 在它不必输出的元素上浪费内存,或者可能,我在这里做错了什么?

0 投票
1 回答
648 浏览

python - 使用 lxml.iterparse 两次解析相同的内容

我不明白为什么会这样:

这不起作用:

并给我这个错误:

我不能两次解析相同的内容吗?奇怪的是,当我只评论循环而不是整个 iterparse 命令时它正在工作。

我想关闭一些东西吗?

非常感谢

0 投票
1 回答
263 浏览

python - python lxml iterparse 在包含命名空间的大文件上失败

我正在尝试按照http://effbot.org/zone/element-iterparse.htm#incremental-parsing中的说明解析大文件(>100mb)

但是如果文件包含命名空间,lxml 会失败并出现错误

如果我删除 elem.clear() 效果很好,但会占用大量内存。xml文件示例

lxml 版本是 3.2.0,因为新版本在解析结束后会出现段错误