2013-08-19 57 views
5

我使用beautifulsoup4这样的:如何使用BeautifulSoup4为xml标签指定名称空间?

from bs4 import BeautifulSoup 
xml_string = u"""<something><dcterms:valid><![CDATA[ 

      start=2012-02-24T00:00:00Z 
      end=2030-12-30T00:00:00Z 
      scheme=W3C-DTF]]> 
     </dcterms:valid></something>""" 
soup = BeautifulSoup(xml_string, 'xml') 
soup.find('dcterms:valid') # returns None 
soup.find('valid') # returns the dcterms:valid node 

是否有指定的soup.find(tagname)的命名空间,所以我可以得到准确的什么,我希望找到一种方式?

回答

0

解析时不需要指定'xml'(编辑:除非在注释中指出了cdata)。

这里是代码的样件,与未将其指定为XML是HTML解析器不处理`CDATA`部分使用了相同的XML解析器我

>>> soup = BeautifulSoup(xml_string) 
>>> soup.find('valid') 
>>> soup.find('dcterms:valid') 
<dcterms:valid start="2012-02-24T00:00:00Z" end="2030-12-30T00:00:00Z" scheme="W3C-DTF"></dcterms:valid> 

>>> item = soup.find('dcterms:valid') 
>>> item['start'] 
u'2012-02-24T00:00:00Z' 
+0

工作的问题。不幸的是,这并不能回答我的问题。 – dar

+0

@dar没有意识到这一点。感谢您指出 – Kalyan02

相关问题