Xml 在 python 和 unbalanced/uneven elements/tags
Xml in python with unbalanced/uneven elements/tags
我有一个 xml 文件,其中包含 uneven/unbalanced elements/fields,这意味着有 </>
但没有 <>
。例如(为简单起见,只复制了xml文件的一部分):
<myTag>
text1
text2
<no_open/>
text3
text4
</myTag>
现在,我想要一个 python 程序来读取这个 xml 文件并按如下方式打印标签值:
text1
text2
text3
text4
但是,因为这个不均匀的元素
<no_open/>
它只打印以下内容并忽略其余部分:
text1
text2
现在,如果我希望我的 python 忽略 no_open 并打印所需的输出,那么解决方案应该是什么?
任何帮助,将不胜感激。
更新:
这是我的代码:
with open('test.xml', "r") as fp:
tree = ElementTree.parse(fp)
root = tree.getroot()
release_data = root[0].text
for tag in root.iter('tag0'):
for c in tag:
print c.text
和test.xml是:
<tag0>
<myTag>
text1
text2
<no_open/>
text3
text4
</myTag>
</tag0>
你可以这样试试:
tree = ElementTree.parse(fp)
root = tree.getroot()
target_tag = root.find('myTag')
#collect all text nodes in <myTag> and join
result = ''.join(target_tag.itertext())
print(result)
输出:
text1
text2
text3
text4
我有一个 xml 文件,其中包含 uneven/unbalanced elements/fields,这意味着有 </>
但没有 <>
。例如(为简单起见,只复制了xml文件的一部分):
<myTag>
text1
text2
<no_open/>
text3
text4
</myTag>
现在,我想要一个 python 程序来读取这个 xml 文件并按如下方式打印标签值:
text1
text2
text3
text4
但是,因为这个不均匀的元素
<no_open/>
它只打印以下内容并忽略其余部分:
text1
text2
现在,如果我希望我的 python 忽略 no_open 并打印所需的输出,那么解决方案应该是什么? 任何帮助,将不胜感激。
更新:
这是我的代码:
with open('test.xml', "r") as fp:
tree = ElementTree.parse(fp)
root = tree.getroot()
release_data = root[0].text
for tag in root.iter('tag0'):
for c in tag:
print c.text
和test.xml是:
<tag0>
<myTag>
text1
text2
<no_open/>
text3
text4
</myTag>
</tag0>
你可以这样试试:
tree = ElementTree.parse(fp)
root = tree.getroot()
target_tag = root.find('myTag')
#collect all text nodes in <myTag> and join
result = ''.join(target_tag.itertext())
print(result)
输出:
text1
text2
text3
text4