问题标签 [elementtree]

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 投票
4 回答
4216 浏览

python - 如何在 Python 中订购 xml 元素属性?

将 xml 文件解析为 Python ElementTree 时,属性的顺序会混淆,因为 Python 将属性存储在字典中。

如何更改字典中属性的顺序?

0 投票
1 回答
1882 浏览

python - python 的 xml.etree.ElementTree 是否支持 DTD?

xml.etree.ElementTree 是否支持 DTD?

如果它支持它,我可以强制 ElementTree 根据 dtd 文件检查 XML 文件,即使 XML 文件已经有一个。(内部或外部)。

0 投票
1 回答
7147 浏览

python - 如何防止 xml.ElementTree fromstring 删除评论节点

我有以下代码片段:

当我输入以下内容时input

结果是:

怎么来的?我怎样才能保留评论?

编辑:我不关心使用的确切 xml 库,但是,我应该能够对标签进行粘贴更改。不幸的是,lxml 似乎不允许这样做(而且我不能使用正确的命名空间操作)

0 投票
3 回答
10484 浏览

python - 如何用 lxml 中的文本替换元素?

使用 lxml 的 ElementTree API 实现很容易从 XML 文档中完全删除给定元素,但是我看不到用一些文本一致地替换元素的简单方法。例如,给定以下输入:

...您可以使用以下方法轻松删除每个<r>元素:

但是,您将如何用文本替换每个元素以获取输出:

在我看来,因为 ElementTree API 通过每个元素的.textand.tail属性而不是树中的节点来处理文本,这意味着您必须根据元素是否具有兄弟元素来处理许多不同的情况,是否现有元素有一个.tail属性,依此类推。我错过了一些简单的方法吗?

0 投票
4 回答
975 浏览

python - 将 Solr XML 解析为 Python 字典

我是 python 新手,正在尝试将 xml 文档(填充了 solr 实例的文档)传递到 python 字典中。我很难真正做到这一点。我曾尝试使用 ElementTree 和 minidom,但似乎无法获得正确的结果。

这是我的 XML 结构:

从这里我需要把它变成一个字典,看起来像:

我不太熟悉字典的工作原理,但还有一种方法可以将所有“文档”放入一个字典中。

干杯。

0 投票
1 回答
445 浏览

python - 如何使用 ElementTree 解析收缩 web xml

我正在尝试使用缩小网站缩略图的 Web 服务。他们有一个返回 XML 的 API,告诉您是否可以创建站点缩略图。我正在尝试使用 ElementTree 来解析 xml,但不确定如何获取我需要的信息。以下是 XML 响应的示例:

我需要得到“stw:StatusCode”。如果我尝试在“stw:StatusCode”上进行查找,则会收到“预期路径分隔符”语法错误。有没有办法只获取状态码?

0 投票
1 回答
231 浏览

python - 代码中的 Xpath 解释

在我工作的公司中,我不得不深入研究这部分代码。您的其中一个解析失败,并且怀疑这部分代码存在错误,但由于我的经验不足,我无法确切地弄清楚它应该做什么。

0 投票
1 回答
29108 浏览

python - Python - ElementTree- cannot use absolute path on element

I'm getting this error in ElementTree when I try to run the code below:

My XML document looks like this:

Code:

I'm on Python 2.6 on Mac. Am I using Xpath syntax wrong?

Basically I want to show every Script elements name attribute if it contains a StepText element with certain text.

0 投票
2 回答
4044 浏览

attributes - 如何更改 ElementTree 属性键?

我想更改现有元素的属性,而不仅仅是值,还要添加/删除/更改键。例如,

我想补充一点:rounded_top_left="5" 等...
创建后可以修改元素属性的键吗?

如果没有,也许我可以使用一种解决方法,例如将所有元素的属性存储在一个临时字典中,然后从中创建一个新元素 +/- 任何所需的更改?
然而,这个解决方案是不可取的,因为我需要修改的元素也有几个子元素......

0 投票
2 回答
21404 浏览

python - 如何以与命名空间无关的方式在 Python 中通过 XPath 查找 XML 元素?

因为我第二次遇到这个烦人的问题,所以我认为询问会有所帮助。

有时我必须从 XML 文档中获取元素,但是这样做的方法很尴尬。

我想知道一个 python 库,它可以做我想做的事,一种优雅的方式来制定我的 XPath,一种在前缀中自动注册命名空间的方法,或者在内置 XML 实现或 lxml 中隐藏首选项以完全剥离命名空间。除非你已经知道我想要什么,否则澄清如下:)

示例文档:

我可以做什么

ElementTree API 是唯一(我知道的)提供 XPath 查询的内置 API。但它要求我使用“UNames”。这看起来像这样:/{http://really-long-namespace.uri}root/{http://with-ambivalent.end/#}elem

如您所见,这些内容非常冗长。我可以通过执行以下操作来缩短它们:

但这既 {{{ugly}}} 又脆弱,因为http…end/#http…end#http…end/http…end,我有谁知道将使用哪个变体?

此外,lxml 支持命名空间前缀,但它既不使用文档中的前缀,也不提供处理默认命名空间的自动化方式。我仍然需要获取每个命名空间的一个元素才能从文档中检索它。命名空间属性没有保留,因此也无法从这些属性中自动检索它们。

也有一种与命名空间无关的 XPath 查询方式,但在内置实现中它既冗长/丑陋又不可用:/*[local-name() = 'root']/*[local-name() = 'elem']

我想做的事

我想找到一个库、选项或通用 XPath 变形函数来实现上述示例,只需键入以下内容……</p>

  1. 未命名空间:/root/elem
  2. 文档中的命名空间前缀:/root/other:elem

…加上一些我确实想使用文档前缀或剥离名称空间的语句。

进一步澄清:虽然我当前的用例就这么简单,但我将来必须使用更复杂的用例。

谢谢阅读!


解决了

用户 samplebias 将我的注意力引向py-dom-xpath;正是我想要的。我的实际代码现在如下所示:

与文档一致,简单,命名空间感知;完美的。