检索 xml 中多个 <br> 与 python 之间的文本

Retrieve text between multiple <br> in xml with python

你好,

我有 xml 个文件组成如下,我想检索 text1、text2、text3 和 text4。

<?xml version="1.0" encoding="UTF-8"?>
<TABLE>
<MAIN>
<CONTENU>
text1 <br/> text2  <br/> text3  <br/> text4
</CONTENU>
</MAIN>
</TABLE>

我在 ElementTree 文档中被困了好几天都没有找到解决方案。我有以下代码,但由于 <br/>,我只得到第一个文本。此外 <br/> 的数量从一个文件到另一个文件是可变的..

import xml.etree.ElementTree as ET

tree = ET.parse(file.xml))
root = tree.getroot()

for txt in root.iter('CONTENU'):
   print(txt)

>>> text1

我该怎么做?提前致谢:)

尝试使用tail而不是text来获取关闭标签后的内容:

import xml.etree.ElementTree as ET

XML = """<?xml version="1.0" encoding="UTF-8"?>
<TABLE>
<MAIN>
<CONTENU>
text1 <br/> text2  <br/> text3  <br/> text4
</CONTENU>
</MAIN>
</TABLE>
"""

root = ET.fromstring(XML)

for txt in root.iter('CONTENU'):
    print(txt.text)
    for c in txt.iter():
        print(c.tail)

输出:


text1 


 text2  
 text3  
 text4

另一种方法。

from simplified_scrapy import SimplifiedDoc,utils,req
html = '''
<?xml version="1.0" encoding="UTF-8"?>
<TABLE>
<MAIN>
<CONTENU>
text1 <br/> text2  <br/> text3  <br/> text4
</CONTENU>
</MAIN>
</TABLE>
'''
doc = SimplifiedDoc(html)
texts = doc.select('CONTENU').getText(separator="|").split('|')
print (texts)