Python's Archiver

為方便港臺同胞閱覽,Python中國特別推出簡繁體內容轉換功能

blackball 发表于 2008-10-10 22:31

8.7.3 minidom 和 DOM标准

8.7.3 minidom 和 DOM标准

xml.dom.minidom模块的基本上是一个DOM 1.0的兼容版本,其中有一些DOM 2.0的特征(主要是命名空间(namespace)的特征) 。

Python中DOM接口的用法是十分直白易懂的,下面的映射规则适用于:
1. 接口可以通过实例对象访问。应用程序不应实例化类本身,他们应该利用基于Document对象的可用的创建函数(creator function)。
   派生的接口支持所有来自基接口(basic interface)的操作(和属性),加上本身增加的新的操作。

2. 操作被用作方法(?Operations are used as methods)。
   但是DOM只能在参数中是只用,参数是通过正常秩序传递的(从左至右)。
   没有可选参数。void操作返回None。
   
3. IDL编译器的属性映射到实例的属性。因为OMG IDL语言和Python之间映射的兼容性, 一个属性foo也可通过方法_get_foo()和_set_foo()进行访问.
   只读(readonly)属性不能改变,这一点不是在运行时执行。

4. short,int,unsigned,int,unsigned long long,boolean都映射到Python的整数(integer)类型上。

5. DOMString映射到为Python的strings。xml.dom.minidom既支持字节字符串和unicode字符串,
   但是一般会生成unicode字符串。根据W3C中的DOM规则在IDL允许为null的地方DOM String的值也可能不存在 。
   
6. 声明const的变量只在各自的范围内有效(如xml.dom.minidom.Node.PROCESSING_INSTRUCTION_NODE );他们不能改变。

7. DOMException目前不支持在xml.dom.minidom 。相反, xml.dom.minidom使用标准的Python的Exception机制,如TypeError和AttributeError。

8. NodeList对象是使用Python内置的清单(list)类型实现的。开始使用于Python 2.2 ,这些对象提供了DOM规范中定义的接口,但是一些早期版本Python里面的实现不支持官方的API。
   但是,里面定义的接口比W3C标准里面定义的更“Pythonic”一些。
   
下面列出来的接口在xml.dom.minidom里面没有实现:
DOMTimeStamp

DocumentType (added in Python 2.1)

DOMImplementation (added in Python 2.1)

CharacterData

CDATASection

Notation

Entity

EntityReference

DocumentFragment

绝大多数在XML文件中这样的反映信息对于很多DOM使用者来说并不是普遍使用的。

[url=http://bugway.cn]BlackBall[/url]翻译,拙劣之处请不吝赐教。E-mail: [email]bugway@gmail.com[/email]

页: [1]

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.