用较少的行解析XML用Python
问题描述:
我在一些Python中使用BS4来使原始字符串看起来像一个好看的XML。用较少的行解析XML用Python
我使用这个:
fileText = (BeautifulSoup(fileText, "xml").prettify())
它给了我这样的输出:
<foobar>
<foo>
bar
</foo>
<foo>
bar2
</foo>
</foobar>
,但我想:
<foobar>
<foo>bar</foo>
<foo>bar2</foo>
</foobar>
任何帮助,不胜感激!
答
from lxml import etree, html
doc = html.fromstring(fileText)
print(etree.tostring(doc, encoding='unicode', pretty_print=True))
并按照上面链接的答案dspjm的评论,该作品一样好:
print(html.tostring(doc, encoding='unicode', pretty_print=True, method='xml'))
唯一的条件是,method='xml'
使用html.tostring
时需要。
输出:
<foobar>
<foo>bar</foo>
<foo>bar2</foo>
</foobar>
此及以下:https://www.crummy.com/software/BeautifulSoup/bs4/doc/#non-pretty-printing –