在动态树中使用minidom获取标记值



我有一个xml文件,在某些深层次中,它不是每次都有相同的标记。

例如,这是xml结构的一部分,其中<openie>位于中

root > document > sentences > sentence > openie

我想从每个sentence<text>标签中获得值

<openie>
<triple confidence="1.000">
<subject begin="1" end="2">
<text>customer</text>
<lemma>customer</lemma>
</subject>
<relation begin="2" end="3">
<text>enters</text>
<lemma>enter</lemma>
</relation>
<object begin="3" end="6">
<text>their order number</text>
<lemma>they order number</lemma>
</object>
</triple>
</openie>

我已经开始使用这种方法了,但是XML有不同的标记,即subjectrelationobject,这一点让我陷入了困境。每个openie中的结构都可以改变,例如,除了我提到的这三个标签之外,还可以有其他标签,也可以有<text>标签。

from xml.dom import minidom
def parse_xml():
xmldoc = minidom.parse('./tmp/nlp_output.xml')
sentencesNode = xmldoc.getElementsByTagName('sentences')
for sentenceNode in sentencesNode:
for openIeNode in sentenceNode.childNodes:
for tripleNode in openIeNode.childNodes:
#what now?

在您的问题需要的上下文中,即

  • 我想从<text>标记每个句子

不需要每次都保留different tagstrack或子节点。这里有一个简单的解决方法:

from xml.dom import minidom
xml_doc = minidom.parse('./tmp/nlp_output.xml')
#  To get Number of available tags, you want to search :
item_list = xml_doc.getElementsByTagName('text')
print("Number of text-tags:", len(item_list), 'n')
for text_Elem in item_list:
text_value = ''.join([node.data for node in text_Elem.childNodes])
print('Required Value:', text_value)

通过使用此技术,您将根据需要获得Exacttag value。要详细了解XML解析,请访问参考资料:如何在Python中解析XML。


以下是给定XML文件的输出,即nlp_output.xml

- Number of text-tags: 3 
- Required Value: customer
- Required Value: enters 
- Required Value: their order number

相关内容

  • 没有找到相关文章

最新更新