如何使用 BeautifulSoup 访问命名空间 XML 元素?

2023-12-19

我有一个 XML 文档,其内容如下:

<xml>
<web:Web>
<web:Total>4000</web:Total>
<web:Offset>0</web:Offset>
</web:Web>
</xml>

我的问题是如何使用 python 中的 BeautifulSoup 这样的库来访问它们?

xmlDom.web["Web"].总计?不起作用?


美丽汤 http://www.crummy.com/software/BeautifulSoup/本身不是 DOM 库(它不实现 DOM API)。更复杂的是,您在该 xml 片段中使用了命名空间。要解析特定的 XML 片段,您可以使用 BeautifulSoup,如下所示:

from BeautifulSoup import BeautifulSoup

xml = """<xml>
  <web:Web>
    <web:Total>4000</web:Total>
    <web:Offset>0</web:Offset>
  </web:Web>
</xml>"""

doc = BeautifulSoup( xml )
print doc.find( 'web:total' ).string
print doc.find( 'web:offset' ).string

如果您没有使用命名空间,代码可能如下所示:

from BeautifulSoup import BeautifulSoup

xml = """<xml>
  <Web>
    <Total>4000</Total>
    <Offset>0</Offset>
  </Web>
</xml>"""

doc = BeautifulSoup( xml )
print doc.xml.web.total.string
print doc.xml.web.offset.string

这里的关键是 BeautifulSoup 不知道(或关心)关于命名空间的任何事情。因此web:Web被视为web:web标签而不是作为Web标签属于web命名空间。虽然 BeautifulSoup 添加了web:web到xml元素字典,python语法无法识别web:web作为单个标识符。

您可以通过阅读以下内容了解更多信息文档 http://www.crummy.com/software/BeautifulSoup/documentation.html.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 BeautifulSoup 访问命名空间 XML 元素? 的相关文章

随机推荐