9.6. 访问元素属性

XML 元素可以有一个或者多个属性,时时彩计划软件公式:只要已经解析了一个 XML 文档,访问它们就太简单了。

在这部分中,将使用 binary.xml 语法文件,你在上一节中已经看到过了。

这部分由于某个含义重叠的术语可能让人有点糊涂。在一个 XML 文档中,元素可以有属性,而 Python 对象也有属性。当你解析一个 XML 文档时,你得到了一组 Python 对象,它们代表 XML 文档中的所有片段,同时有些 Python 对象代表 XML 元素的属性。但是表示 (XML) 属性的 (Python) 对象也有 (Python) 属性,它们用于访问对象表示的 (XML) 属性。我告诉过你它让人糊涂。我会公开提出关于如何更明显地区分这些不同的建议。

例 9.24. 访问元素属性

>>> xmldoc = minidom.parse('binary.xml')
>>> reflist = xmldoc.getElementsByTagName('ref')
>>> bitref = reflist[0]
>>> print bitref.toxml()
<ref id="bit">
  <p>0</p>
  <p>1</p>
</ref>
>>> bitref.attributes          
<xml.dom.minidom.NamedNodeMap instance at 0x81e0c9c>
>>> bitref.attributes.keys()   
[u'id']
>>> bitref.attributes.values() 
[<xml.dom.minidom.Attr instance at 0x81d5044>]
>>> bitref.attributes["id"]    
<xml.dom.minidom.Attr instance at 0x81d5044>
每个 Element 对象都有一个 attributes 属性,它是一个 NamedNodeMap 对象。听上去挺吓人的,其实不然,因为 NamedNodeMap 是一个行为像字典的对象,所以你已经知道怎么使用它了。
NamedNodeMap 视为一个字典,你可以通过 attributes.keys() 获得属性名称的一个列表。这个元素只有一个属性,'id'
属性名称,像其它 XML 文档中的文本一样,都是以 unicode 保存的。
再次将 NamedNodeMap 视为一个字典,你可以通过 attributes.values() 获取属性值的一个列表。这些值本身是 Attr 类型的对象。你将在下一个例子中看到如何获取对象的有用信息。
仍然把 NamedNodeMap 视为一个字典,你可以通过常用的字典语法和名称访问单个的属性。(那些非常认真的读者将已经知道 NamedNodeMap 类是如何实现这一技巧的:通过定义一个 __getitem__ 专用方法。其它的读者可能乐意接受这一事实:他们不需要理解它是如何工作的就可以有效地使用它。)

例 9.25. 访问单个属性

>>> a = bitref.attributes["id"]
>>> a
<xml.dom.minidom.Attr instance at 0x81d5044>
>>> a.name  
u'id'
>>> a.value 
u'bit'
Attr 对象完整代表了单个 XML 元素的单个 XML 属性。属性的名称 (与你在 bitref.attributes NamedNodeMap 伪字典中寻找的对象同名) 保存在a.name中。
这个 XML 属性的真实文本值保存在 a.value 中。
类似于字典,一个 XML 元素的属性没有顺序。属性可以以某种顺序偶然 列在最初的 XML 文档中,而在 XML 文档解析为 Python 对象时,Attr 对象以某种顺序偶然 列出,这些顺序都是任意的,没有任何特别的含义。你应该总是使用名称来访问单个属性,就像字典的键一样。
彩博士时时彩软件安卓 最好的重庆时时彩软件 重庆时时彩视频教程 老时时彩怎么定毒胆 江西时时彩计划群959444
助赢时时彩预警软件 重庆时时彩龙虎和平台 帝景江西时时彩 重庆时时彩杀号公式 一号平台时时彩
时时彩技巧上鼎狐网 福建时时彩官网 时时彩平台奖金高9.99 江西时时彩娱乐平台 重庆时时彩软件专家
时时彩的玩法技巧 江西时时彩201607 时时彩胆码软件安卓版 时时彩计划网 时时彩软件破解方法
赛马会资料 时时彩走势图 广西11选5同步开奖直播室 3d试机号对应码 福建快3遗漏码一定牛
福建22选5开奖结果 香港赛马会排位表 吉林11选5开奖直播 云南快乐10分11选5 黑龙江体彩61中奖规则
重庆时时彩软件免费下 广西11选5历史开奖 北京pk拾预测 海南七星彩规律图808 排列三预测
日本娃娃充气玩法图 北京pk拾七码技巧 浙江快乐12 北京赛车计划 广东11选五开奖结果