python中的Xml,带有不平衡/不均匀的元素/标签

时间:2015-06-14 05:26:56

标签: python xml xml-parsing

我有一个包含不均衡/不平衡元素/字段的xml文件,这意味着有</>但不是<>。例如(为简单起见,只复制了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>

1 个答案:

答案 0 :(得分:3)

您可以尝试这种方式:

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