2017-08-03 39 views
1

我在一些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> 

任何帮助,不胜感激!

+0

此及以下:https://www.crummy.com/software/BeautifulSoup/bs4/doc/#non-pretty-printing –

回答

0

Jayesh Bhoot's answer

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>