【发布时间】:2012-06-20 15:19:20
【问题描述】:
我浏览了几篇帖子,但还没有找到任何解决我问题的答案。
示例 XML =
<TextWithNodes>
<Node id="0"/>TEXT1<Node id="19"/>TEXT2 <Node id="20"/>TEXT3<Node id="212"/>
</TextWithNodes>
所以我明白,通常如果我将TextWithNodes 提取为NodeList,我会做类似的事情
nodeList = TextWithNodes[0].getElementsByTagName('Node')
for a in nodeList:
node = a.nodeValue
print node
我得到的只是None。我读到你必须写 a.childNodes.nodeValue 但是节点列表中没有子节点,因为看起来所有的 Node id 都是结束标签?如果我使用a.childNodes,我会得到[]。
当我得到 a 的节点类型时,它是类型 1 和 TEXT_NODE = 3。我不确定这是否有帮助。
我要提取TEXT1、TEXT2等
【问题讨论】:
-
您的
TEXT1、TEXT2等实际上不是任何元素的一方。你的 XML 应该是<Node id="0">TEXT1</Node><Node id="19">TEXT2</Node><Node id="20">TEXT3</Node><Node id="212" />吗?另外,是否有关闭<TextWithNodes>标签? -
另外,我强烈建议使用
xml.etree.ElemetTree(标准库的一部分)在 Python 中处理 XML。它是一个更简单、更 Pythonic 的界面。例如,在xml.dom中,您必须使用element.childNodes.nodeValue来获取与element关联的文本,在etree 中这就是element.text。 -
嗨,克里斯,谢谢,我就是这么想的,因为它都是结束标签,这让我很困惑。我不确定这个 xml 文件的有效性,它只是一个文本工程软件的输出,用于注释,我需要将其解析为 excel。我将研究 ElementTree。
标签: python xml parsing minidom