gpt4 book ai didi

python xml minidom 获取包含子节点和文本的子节点的全部内容

转载 作者:太空宇宙 更新时间:2023-11-04 05:32:08 37 4
gpt4 key购买 nike

我正在寻找使用 xml minidom 提取 xml 文件的内容,示例如下:

<parent>
<child>
text1
<subchild>text2 </subchild>
text3
</child>
</parent>

以下代码仅提取“text1”:

  DOMTree = xml.dom.minidom.parse('file.xml')
document = DOMTree.documentElement
parents = document.getElementsByTagName('parent')
for parent in parents:
child = parents.getElementsByTagName('parent')[0]
print(child.childNodes[0].nodeValue) # shows text1

我可以得到text1text2但不能得到text3
请问我怎样才能得到我的子元素和我的子元素(text1 text2 text3)的完整内容?

最佳答案

遍历子节点并在 Text 对象的情况下获取 .data 属性,否则获取 firstChild.nodeValue:

print([node.data.strip() if isinstance(node, xml.dom.minidom.Text) else node.firstChild.nodeValue
for node in child.childNodes])

打印 ['text1', 'text2', 'text3']


我会考虑切换到比 minidom 库更直接、更易于使用和理解的东西。例如,看看 BeautifulSoup 有多简单在xml mode :

>>> from bs4 import BeautifulSoup
>>> data = """
... <parent>
... <child>
... text1
... <subchild>text2 </subchild>
... text3
... </child>
... </parent>
... """
>>> soup = BeautifulSoup(data, "xml")
>>> print(soup.child.get_text())

text1
text2
text3

关于python xml minidom 获取包含子节点和文本的子节点的全部内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36842732/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com