У меня есть XML-документ, который читает как это:
<xml>
<web:Web>
<web:Total>4000</web:Total>
<web:Offset>0</web:Offset>
</web:Web>
</xml>
мой вопрос состоит в том, как я получаю доступ к ним пользующийся библиотекой как BeautifulSoup в Python?
xmlDom.web ["сеть"].Total? не работает?
BeautifulSoup не является библиотекой DOM как таковой (она не реализует API-интерфейсы DOM). Чтобы усложнить ситуацию, вы используете пространства имен в этом фрагменте 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
как единственный идентификатор.