2
我解析一个XML文件使用美丽的汤,但发现解析空元素时不一致的行为。即美丽的汤空元素错误
from BeautifulSoup import BeautifulSoup
s1 = "<c><a /><b /></c>"
s2 = "<c><a></a><b></b></c>"
soup1 = BeautifulSoup(s1)
soup2 = BeautifulSoup(s2)
print soup1
# <c><a><b></b></a></c>
print soup2
# <c><a></a><b></b></c>
注意,b
标签是在第一种情况下a
标签内,而不是在第二位。我认为XML规范意味着s1
和s2
是等同的?
有什么想法可以解决这个问题?
“a”和“b”的选择是任意的。我正在使用XML标记,而不是(X)HTML。另外,增加空间并没有什么不同。 – BrT 2012-03-08 13:43:59
BrT:BeautifulSoup是一个(X)HTML解析器,__not__是一个XML解析器。正因为如此,它只支持有意义的元素的自闭标签。对于通用XML解析,请使用__ ['xml.dom.minidom'](http://docs.python.org/library/xml.dom.minidom.html#module-xml.dom.minidom)__。我不确定它是否支持自闭标签,但如果不支持,您可以随时替换为正则表达式。 – orlp 2012-03-08 13:55:24
啊,对不起,我没有意识到关于BeautifulSoup - 我会看看minidom。谢谢! – BrT 2012-03-08 14:44:08