问题标签 [xml.etree]

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 回答
1722 浏览

python - 在 Python 中,解析自定义 XML 标签而不解析 HTML

我是 Python 2.7 的新手,我正在尝试解析一个包含 HTML 的 XML 文件。我想解析自定义 XML 标记而不解析任何 HTML 内容。最好的方法是什么?(如果有帮助,我的自定义 XML 标记列表很小,所以如果有一个 XML 解析器可以选择只解析指定的标记,这可能会正常工作。)

例如,我有一个 XML 文件,看起来像

我希望能够解析除 HTML 之外的所有内容,尤其是将 myTag2 的值提取为未解析的 HTML。

编辑:这里有更多信息来回答下面的问题。我以前尝试过使用 ElementTree。这就是发生的事情:

我想要的 HTML 字符串已被解析并存储为标签和文本:

但我真的很想能够做这样的事情......

解决方案:

har07 的回答效果很好。我稍微修改了该代码以解决极端情况。这是我正在实施的:

那么如果

原始代码将仅返回以第一个 XML 格式标记开头的文本,但修改后的版本将捕获所需的文本:

0 投票
3 回答
4068 浏览

python - 如何使用 Python 将命名空间和前缀插入 XML 字符串?

假设我有一个 XML 字符串:

我想插入 XML Schema 使用的类型的命名空间,在所有元素名称前面放置一个前缀。

lxml.etree有没有办法使用或类似的库来做到这一点(除了蛮力查找替换或正则表达式) ?

0 投票
1 回答
1221 浏览

python - Python etree.ElementTree IOError: [Errno 22] 无效模式 ('rb') 或文件名 -

我正在使用 zipfile 模块,每当我尝试读取提取的 XML 数据时,我都会收到此错误并且我不太理解,我尝试使用不同的模式来解决它,但没有奏效。

这是我的代码:

0 投票
1 回答
795 浏览

python - 如何使用 python 更新 xml 标签值?

我是 Python 新手,我想知道如何使用 Python 实现以下目标。

我有一个 XML 文件,我想打开该文件并且必须为 tag 设置新值。

如果在更新过程中出现任何故障,则文件将变为原始状态

文件名:ABC.xml

将文件路径传递给某个函数。

如果在值更新期间没有问题,则需要使用更正的值更新原始文件。

预期输出:

如果出现任何问题,文件应该回滚。

提前致谢。

0 投票
1 回答
936 浏览

python - 如何删除空 xml 标签中的多余空间

我有一个 xml 文件,我正在其中查找特定标签(例如: tag <x>),如果找到他,我会将其值替换/更新为特定文本(例如:test)。

Python 版本 3.5.0。

示例 xml 文件:

这是我的代码:

这是我的输出:

一切都按预期工作。

但我的问题是空标签中有额外的空间:<a /> 在标签名称“a”“斜杠”之间,输入 xml 文件中不存在。

我正在处理带有很多空标签的相当大的 xml 文件,所以每个额外的空间都会使这些文件变得更大。

有没有办法阻止ElementTree.write()添加额外的空间?

注意:我想在 Python 模块中使用构建,而不是安装第三方解决方案。

非常感谢您的建议!

0 投票
1 回答
602 浏览

python-2.7 - 在现有 xml 中添加重复的子标签

示例.py

o/p 运行 sample.py 3 次

[注意:我没有低于输出]所需的 o/p 是如果我运行 sample.py 3 次,o/p 应该如下

0 投票
1 回答
241 浏览

python - 如何在 Python 中使用 lxml 来获取以下元素?

我有下一个 XML 文件:

树的常见结构是:

我想要的是获取字符串与MY GROUP和所有以下字段不同的分隔符,直到下一个分隔符(我的目的是使每个元素不可见,除了分隔符MY GROUP和字段in_group_144in_group_142in_group_148in_group_147in_group_146in_group_145in_group_141in_group_143)。

XML 树会改变其字段名称,因此通过名称获取字段将不是解决方案。

这里lxml/Python : get previous-sibling给出了如何获取上一个兄弟,但是我怎样才能以有效的方式获取其标签为分隔符的上一个兄弟?

我目前的解决方案:

有没有比递归方法更直接的方法来管理我的目标?

0 投票
2 回答
140 浏览

python - Python 比较目录列表中 XML.Etree 和文件和文件夹名称的差异

我正在使用 Python 将我的 flickr 照片与本地硬盘照片目录进行比较。

为了做到这一点,我在 Python 中使用 OAuth 并获取我在 flickr 中拥有的每个文件夹/专辑的 etree 列表。flickr 上的文件夹/专辑内容“应该”与我的本地副本目录匹配。

当我的本地驱动器和 flickr 上的照片列表中没有项目时,我希望我的脚本告诉我(反之亦然)。

flickr 照片的“标题”字段应与 Linux 上的文件名相同,Linux 上的目录名称将/应该与 flickr 上的相册名称匹配。这就是我目前的设置方式。

我想知道在 Python 中比较这些项目列表(etree 节点项目与os.listdir()项目)的最佳和最有效的方法是什么?

除非必要,否则我宁愿不使用sort()bash 将任何管道输出排序为文件名。如果可能的话,我想把所有东西都保存在 Python 中,因为我只是在学习它。

我可以使用os.listdir()它并将其与XML.Etree返回到 flickr 的节点进行比较,但是进行这种比较的最佳方法是什么?

请记住,在比较来自 flickr 和 Linux 的项目时,这些列表可能不同并且可能没有排序。

我编写了以下代码片段以从 flickr 获取结果:

上述代码的输出示例如下:

getPhotos 的 API 在这里:https ://www.flickr.com/services/api/flickr.photosets.getPhotos.htm ,其中显示了一些示例 xtree/XML 输出。

Etree API:https ://docs.python.org/2/library/xml.etree.elementtree.html

0 投票
1 回答
1309 浏览

python - 读取 CSV 文件并替换 xml 标签

我想读取一个 CSV 文件并将 xml 文件中的标签替换为 CSV 文件的第二列。标签“名称”值位于第一列。

XML 结构的样子。

Python代码

我该如何处理?

CSV 文件如下所示:

读取 CSV 文件看起来像

输出应如下所示:

Value1 应替换为 ValueX

好的,这是我的解决方案:

好吧,我正在使用一个数组。我可以将文件中的值复制到数组中。对于大文件,它需要更好的代码。

0 投票
1 回答
63 浏览

python - etree xml python如何修改严格性?

我在 Python 中使用 etree 来解析 XML 文件,该文件恰好在节点内有一个“<”字符,所以它返回一个错误:

“与元素类型“BLAHBLAH”关联的属性 blahblah 的值不能包含“<”字符。

没有进入关于格式良好的 XML 的讨论(我别无选择,我没有编写 xml),我想知道是否有办法在 Python 中抑制 etree 中的错误,以便我可以继续解析 XML?