python - Python 中的嵌套 XML 标签

标签 python xml minidom

我有一个嵌套的 XML,如下所示:

<data>foo <data1>hello</data1> bar</data>

我正在使用minidom,但无论我如何尝试获取“data”之间的值,我只得到“foo”而不是“bar”

如果 XML 是这样的,那就更糟糕了:

<data><data1>hello</data1> bar</data>

我只得到一个“None”,根据上面的逻辑这是正确的。所以我遇到了这个:http://levdev.wordpress.com/2011/07/29/get-xml-element-value-in-python-using-minidom并得出结论是由于minidom的限制?

所以我使用了该博客中的方法,现在我得到了

foo <data1>hello</data1> bar

<data1>hello</data1> bar

这是可以接受的。但是,如果我尝试使用上面的输出作为节点值来创建一个新节点 (createTextNode),则 XML 变为:

<data>foo &lt;data1&gt;hello&lt;/data1&gt; bar</data>

<data>&lt;data1&gt;hello&lt;/data1&gt; bar</data>

有什么方法可以让它看起来像原来的一样吗?谢谢。

最佳答案

您可以使用 xml 元素树,它对于节点的检索和创建非常有效

看看下面的链接

element tree -- tutorials mixed xml

创建节点的一些示例

import xml.etree.ElementTree as ET

  data = ET.Element('data')

data1= ET.SubElement(data, 'data1',attr="value")
data1.text="hello"
data.text="bar"
data1.tail="some code"
ET.dump(data)

输出:<data>bar<data1 attr="value">hello</data1>some code</data>

关于python - Python 中的嵌套 XML 标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23331634/

相关文章:

python - 通过 Pythons 子进程使用换行符和 Linux 邮件命令发送邮件

java - java中如何区分xml和html链接

python - 使用 etree 从 xml 标签解析 namespace

java - 将 xml 字符串作为文档传递返回 null

python - "__main__"只是一个字符串文字吗?

python - 行作为字典 - pymssql

python - 如何使用 minidom + python 更改 XML 中的元素名称

Python:xml.dom.minidom 空 nodeValue 非空 toxml() 值

Python 进阶之路——从学徒到大师

python - 使用 pythonanywhere 的 Python 脚本出现 XML 解析错误(但不在本地计算机上)