我正在使用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>
答案 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有效,也可能会出现问题。