类似下面的情况。
XML 文件:
<tag1/>
<tag2>some_data</tag2>
<tag1>some_another_data</tag1>
tag1 有时是自动关闭的,有时内部有数据。
代码:
from BeautifulSoup import BeautifulStoneSoup
s = '<tag1/><tag2>some_data</tag2><tag1>some_another_data</tag1>'
soup1 = BeautifulStoneSoup(s)
soup2 = BeautifulStoneSoup(s, selfClosingTags=["tag1"])
print soup1.prettify()
print
print soup2.prettify()
输出:
<tag1>
<tag2>
some_data
</tag2>
</tag1>
<tag1>
some_another_data
</tag1>
<tag1 />
<tag2>
some_data
</tag2>
<tag1 />
some_another_data
在第一种情况下,tag1 会吃掉后面的标签(如果它又不是 tag1),因为默认情况下不支持自关闭标签。 在第二种情况下,自关闭标签不支持子标签。
我只想获取原始 xml 文档的结构。 BeautifulSoup 可以吗?如果可能的话,如何让所有标签默认自动关闭? xml 文件很多,我不想手动搜索所有此类情况。
最佳答案
我不推荐 BeautifulSoup (甚至不推荐 HTML 解析)。使用标准库中的 ElementTree,或 lxml ,如果您需要更强大的 XML 库。
关于python - 当某些标签自闭且不同时时,BeautifulSoup可以解析xml吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4844827/