BeautifulSoup XML只有打印的第一线
问题描述:
我使用BeautifulSoup4(和LXML)解析XML文件,当我打印soup.prettify(某些原因)只打印第一行:BeautifulSoup XML只有打印的第一线
from bs4 import BeautifulSoup
f = open('xmlDoc.xml', "r")
soup = BeautifulSoup(f, 'xml')
print soup.prettify()
#>>> <?xml version="1.0" encoding="utf-8"?>
任何想法为什么它不抓住一切?
UPDATE:
<?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>
答
文件位置在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'
答
按JFSebastion的回答中,XML是无效的。
你的最后一个标记是不正确的:
<djmacros>
正确的标签是:
</djmacros>
您可以用XML验证证实了这一点。例如http://www.w3schools.com/xml/xml_validator.asp
我有类似的麻烦。我怀疑它实际上没有捕获任何东西。 (如果你在格式不正确的XML上尝试你的代码,我希望它仍然只返回xml头文件)。 – chobok 2012-03-23 14:10:04
嗯,我只是尝试剪切和粘贴你的XML。它似乎对我来说工作正常。你使用什么版本? – chobok 2012-03-23 14:11:13