python - 在动态树中使用 minidom 获取标签值
问题描述
我有一个 xml 文件,它在某些深层级别中每次都没有相同的标签。
例如,这是xml结构的一部分,<openie>
位于
root > document > sentences > sentence > openie
我想从<text>
每个标签中获取值sentence
<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 有不同标签的地方,即。subject
,relation
和object
. 并且每个中的结构都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>标签中获取值?
不需要每次都保留或子节点track
。different tags
这是简单的解决方法:
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)
通过使用这种技术,您将获得Exact tag value
as required 在您的情况下。要详细了解 XML 解析,请访问参考:How-to-Parse-XML-in-Python。
这是给定 XML 文件的输出nlp_output.xml
,即
- Number of text-tags: 3
- Required Value: customer
- Required Value: enters
- Required Value: their order number
推荐阅读
- logistic-regression - 如何解释 LogisticRegression 系数:使用 sklearn StackingClassifier 进行三元分类
- javascript - 如何在点击时更改 img 大小,并在使用 javascript 切换时将其恢复正常?
- reactjs - 如何检测微前端应用程序中的路由变化
- locale - text_annotations 结果是否提供了适当的值作为语言环境的一部分
- javascript - Orgchart js 错误:请求的资源上不存在“Access-Control-Allow-Origin”标头
- r - 自动阻止 Legend 被绘图裁剪 (R)
- python - How to display transparent images PyQt QWidget
- python - 从beautifulsoup中的第一个span标签获取价值
- google-cloud-platform - 将集合导出到 BigQuery - 到另一个项目
- r - 内部错误:索引“SiteName”存在但在 R 中无效