BeautifulSoup中的selfClosingTags
问题内容:
使用BeautifulSoup解析我的XML
import BeautifulSoup
soup = BeautifulSoup.BeautifulStoneSoup( """<alan x="y" /><anne>hello</anne>""" ) # selfClosingTags=['alan'])
print soup.prettify()
这将输出:
<alan x="y">
<anne>
hello
</anne>
</alan>
即,anne标签是alan标签的子元素。
如果在创建汤时传递selfClosingTags = [‘alan’],我将得到:
<alan x="y" />
<anne>
hello
</anne>
大!
我的问题:为什么不能使用的存在/>
来指示自闭标签?
问题答案:
您注意到了作者给类/模块赋予了Beautiful [Stone] Soup之类的名字之后,您在问作者在想什么:-)
这是BeautifulStoneSoup的行为的另外两个示例:
>>> soup = BeautifulSoup.BeautifulStoneSoup(
"""<alan x="y" ><anne>hello</anne>"""
)
>>> print soup.prettify()
<alan x="y">
<anne>
hello
</anne>
</alan>
>>> soup = BeautifulSoup.BeautifulStoneSoup(
"""<alan x="y" ><anne>hello</anne>""",
selfClosingTags=['alan'])
>>> print soup.prettify()
<alan x="y" />
<anne>
hello
</anne>
>>>
我的看法:如果未为解析器定义自动关闭标签,则该标签不合法。因此,在决定如何处理诸如<alan x="y" />
…的非法片段时,作者可以选择…(1)假设s/
是一个错误(2)alan
视为自动关闭标签,而与在输入中其他地方如何使用无关(3
)在输入过程中进行2遍输入,并在第一遍中说明如何使用每个标签。您更喜欢哪个选择?