使用Python解析XML,使用更少的行

时间:2017-08-03 19:37:06

标签: python xml-parsing beautifulsoup

我在某些Python中使用BS4使原始字符串看起来像一个好看的XML。

我正在使用它:

fileText = (BeautifulSoup(fileText, "xml").prettify())

它给我这样的输出:

<foobar>
  <foo>
  bar
  </foo>
  <foo>
  bar2
  </foo>
</foobar>

但我想:

<foobar>
  <foo>bar</foo>
  <foo>bar2</foo>
</foobar>

非常感谢任何帮助!

1 个答案:

答案 0 :(得分: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>