LXML XML和XML标签内的HTML标记解析(lxml xml parsing with htm

2019-10-18 22:47发布

<xml>
<maintag>    
<content> lorem <br>ipsum</br> <strong> dolor sit </strong> and so on </content>
</maintag>
</xml>

xml文件,我经常分析,可能有html标签内容标签内,如上图所示。

在这里,我怎么解析文件:

parser = etree.XMLParser(remove_blank_text=False)
tree = etree.parse(StringIO(xmlFile), parser)
for item in tree.iter('maintag'):
  my_content = item.find('content').text
  #print my_content
  #output: lorem

作为结果它导致my_content = 'LOREM'代替哪位我想见式'LOREM <BR> ipsum的</ BR>的<strong>悲坐</ strong>并等等'

我怎样才能阅读的内容为 'LOREM <BR>存有</ BR> <STRONG>悲坐</ STRONG>等'?

注:内容标签可能有另一个HTML标签而不是强。 而且可能没有他们。

Answer 1:

from lxml import etree
root = etree.fromstring('''<xml>
<maintag>    
<content> lorem <br>ipsum</br> <strong> dolor sit </strong> and so on </content>
</maintag>
</xml>''')
for content in root.xpath('.//maintag/content'):
    print etree.tostring(content)

版画

<content> lorem <br>ipsum</br> <strong> dolor sit </strong> and so on </content>

....
for content in root.xpath('.//maintag/content'):
    print ''.join(child if isinstance(child, basestring) else etree.tostring(child)
                  for child in content.xpath('*|text()'))

版画

 lorem <br>ipsum</br>  <strong> dolor sit </strong> and so on  and so on


文章来源: lxml xml parsing with html tags inside xml tags