我试图让所有的XML属性标记名称。
I'm trying to get all the XML attributes for the tag Name.
收到此错误:
AttributeError: 'NoneType' object has no attribute 'attrs'当我执行以下code:
when I executed the following code:
import BeautifulSoup as bs xml = ''' <Product Code="1" HighPic="upload.wikimedia/wikipedia/commons/thumb/5/5f/Linksys48portswitch.jpg/220px-Linksys48portswitch.jpg" HighPicHeight="320" HighPicSize="37217" HighPicWidth="400" ID="35" Title="Demo Product"> <Category ID="23"> <Name ID="57" Value="Switches" langid="1"/> </Category> </Product>''' doc = bs.BeautifulSoup(xml) div = doc.find("Name") for attr, val in div.attrs: print "%s:%s" % (attr, val)我改变了标签名称到名,然后它的作品。
为什么会出现这个错误时,变量名称包含大写字母?
Why am I getting this error when the tag name contains capital letters?
推荐答案BeautifulSoup是一个HTML的解析库,主要是。它可以处理XML太多,但所有标签小写按照HTML规范。引述 BeautifulSoup文档:
BeautifulSoup is a HTML-parsing library, primarily. It can handle XML too, but all tags are lowercased as per the HTML specification. Quoting the BeautifulSoup documentation:
由于HTML标记和属性是不区分大小写,所有三个HTML解析器转换标签和属性的名称为小写。也就是说,标记&LT; TAG&GT;&LT; / TAG&GT; 转换为&LT;标签&GT;&LT; /标签&GT; 。如果您想preserve大小写混合的或大写的标记和属性,则需要解析文档为XML。
Because HTML tags and attributes are case-insensitive, all three HTML parsers convert tag and attribute names to lowercase. That is, the markup <TAG></TAG> is converted to <tag></tag>. If you want to preserve mixed-case or uppercase tags and attributes, you’ll need to parse the document as XML.
有是的一个 XML作案其中标签是匹配大小写敏感,不小写,但是这需要安装在 LXML 库。因为 LXML 是C扩展库,这是不支持谷歌应用程序引擎。
There is a XML modus where tags are matches case-sensitively and are not lowercased, but this requires the lxml library to be installed. Because lxml is a C-extension library, this is not supported on the Google App Engine.
使用 ElementTree的API,而不是:
import xml.etree.ElementTree as ET root = ET.fromstring(xml) div = root.find('.//Name') for attr, val in div.items(): print "%s:%s" % (attr, val)更多推荐
当XML标记名称包含大写字母BeautifulSoup提高AttributeError的
发布评论