2012-03-08 82 views
2

我使用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> 
+0

我有类似的麻烦。我怀疑它实际上没有捕获任何东西。 (如果你在格式不正确的XML上尝试你的代码,我希望它仍然只返回xml头文件)。 – chobok 2012-03-23 14:10:04

+0

嗯,我只是尝试剪切和粘贴你的XML。它似乎对我来说工作正常。你使用什么版本? – chobok 2012-03-23 14:11:13

回答

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' 
+0

添加了XML片段。 – moreisee 2012-03-08 18:41:12

+0

@moreisee:做'f.seek(0)'将文件倒回到开头。您可能已经使用了它(使用未显示的代码)。 – jfs 2012-03-08 18:45:59

+0

这就是所有存在的python代码。只要让我的脚与BeautifulSoup湿。编辑:无论如何试过,没有运气。 – moreisee 2012-03-08 18:46:43