python - 当某些标签自闭且不同时时,BeautifulSoup可以解析xml吗

标签 python xml parsing beautifulsoup

类似下面的情况。

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/

相关文章:

python - __all__ 大量进口的按需进口

c++ - 解析 HHMMSS 来自 NMEA

python - django-taggit - 根据 vlog 发布日期显示所有标签

编译 64 位 C dll

xml - Jenkins:指标 'JUnit' 的结果文件无效。结果文件已被跳过

java - com.sun.proxy.$Proxy219 无法使用 Java Config 进行转换,但它可以与 xml 一起正常工作

c++ - spirit x3 如何将 vector 添加到 AST

java - 使用java中的split读取 ""之后和 "("之前的字符串

python - 如何在 Pandas 数据框中找到不同日期的一天中的小时数之间的差异?

python - 解决 python 中的迭代 TypeError