我正在使用Beautiful Soup解析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
是等价的?
有关我如何处理此事的任何想法?
答案 0 :(得分:1)
锚点和粗体(<a>
,<b>
)元素不能自动关闭,因此这是无效的XHTML。
最重要的是,XHTML spec表示空格必须超越斜线:
在尾随/和&gt;之前加一个空格空元素,例如&lt; br /&gt ;,&lt; hr /&gt;和&lt; img src =“karen.jpg”alt =“Karen”/&gt;。此外,对空元素使用最小化标记语法,例如&lt; br /&gt;,作为替代语法&lt; br&gt;&lt; / br&gt; XML允许在许多现有的用户代理中提供不确定的结果。