BeautifulSoup XML只打印第一行

时间:2012-03-08 18:01:38

标签: python xml beautifulsoup

我正在使用BeautifulSoup4(和lxml)来解析XML文件,出于某种原因,当我打印soup.prettify()时,它只打印第一行:

from bs4 import BeautifulSoup

f = open('xmlDoc.xml', "r")

soup = BeautifulSoup(f, 'xml')

print soup.prettify()

#>>> <?xml version="1.0" encoding="utf-8"?>

知道为什么它没有抓住一切吗?

更新:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>

<!-- Data Junction generated file.
Macro type "1000" is reserved. -->
<djmacros>
  <macro name="Test" type="5000" value="TestValue">
    <description>test</description>
  </macro>
  <macro name="AnotherTest" type="0" value="TestValue2"/>
  <macro name="TestLocation" type="1000" value="C:\RandomLocation">
    <description> </description>
  </macro>
<djmacros>

3 个答案:

答案 0 :(得分:4)

文件位置为EOF:

>>> soup = BeautifulSoup("", 'xml')
>>> soup.prettify()
'<?xml version="1.0" encoding="utf-8">\n'

或者内容无效xml:

>>> soup = BeautifulSoup("no <root/> element", 'xml')
>>> soup.prettify()
'<?xml version="1.0" encoding="utf-8">\n'

答案 1 :(得分:1)

根据J.F.Sebastion的回答,XML无效。

您的最终代码不正确:

<djmacros>

正确的标签是:

</djmacros>

您可以使用XML验证程序进行确认。例如http://www.w3schools.com/xml/xml_validator.asp

答案 2 :(得分:0)

如果编码是UTF-8-BOM而不是UTF-8,即使XML有效,也可能会出现问题。