<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&lt; br&gt; ipsum&lt; / BR&GT; &LT;强大&gt; dolor sit&lt; / strong&gt;等等'
我怎样才能将内容读作'lorem&lt; BR&GT; ipsum的&LT; / BR&GT; &LT;强大&gt; dolor sit&lt; / strong&gt;等等'?
注意:内容标记可能包含其他html标记而不是强标记。可能根本没有它们。
答案 0 :(得分: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