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