xml.dom: 文档对象模型
xml.dom.registerDOMImplementation(name, factory)
使用名称注册工厂函数。工厂函数应返回实现名称接口的对象。
xml.dom.getDOMImplementation([name[, features]])
返回一个合适的DOM实现。
xml.dom.EMPTY_NAMESPACE
用于指示没有命名空间与DOM中的节点关联的值。这通常作为namespaceURI节点发现,或者用作特定于命名空间的方法的namespaceURI参数。
xml.dom.XML_NAMESPACE
与保留前缀关联的名称空间URI xml,由XML中的命名空间定义 。
xml.dom.XMLNS_NAMESPACE
名称空间声明的名称空间URI,由文档对象模型(DOM)级别2核心规范定义。
xml.dom.XHTML_NAMESPACE
XHTML 1.0定义的XHTML命名空间的URI :可扩展超文本标记语言。
接口 | 部分 | 目的 |
---|---|---|
DOMImplementation | DOMImplementation对象 | 底层实现的接口。 |
Node | 节点对象 | 文档中大多数对象的基本接口。 |
NodeList | NodeList对象 | 一系列节点的接口。 |
DocumentType | DocumentType对象 | 有关处理文档所需声明的信息。 |
Document | 文件对象 | 表示整个文档的对象。 |
Element | 元素对象 | 文档层次结构中的元素节点。 |
Attr | Attr对象 | 元素节点上的属性值节点。 |
Comment | 注释对象 | 源文档中的注释表示。 |
Text | 文本和CDATASection对象 | 包含文档中文本内容的节点。 |
ProcessingInstruction | ProcessingInstruction对象 | 处理指令表示。 |
DOMImplementation界面为应用程序提供了一种确定其所使用的DOM中特定功能的可用性的方法。
DOMImplementation.hasFeature(feature, version)
如果实现了由字符串对功能和 版本标识的功能,则返回true 。
DOMImplementation.createDocument(namespaceUri,qualifiedName,doctype )
返回一个新Document对象(DOM的根),其子 Element对象具有给定的namespaceUri和qualifiedName。
DOMImplementation.createDocumentType(qualifiedName,publicId,systemId )
返回一个DocumentType封装给定qualifiedName,publicId和systemId字符串的新对象 ,表示XML文档类型声明中包含的信息。
XML文档的所有组件都是子类Node。
Node.nodeType
表示节点类型的整数。【只读属性】
对于类型的符号常量是在Node对象:ELEMENT_NODE,ATTRIBUTE_NODE, TEXT_NODE,CDATA_SECTION_NODE,ENTITY_NODE, PROCESSING_INSTRUCTION_NODE,COMMENT_NODE, DOCUMENT_NODE,DOCUMENT_TYPE_NODE,NOTATION_NODE。
Node.parentNode
当前节点的父节点,或None文档节点的父节点。【只读属性】
Node.attributes
一个NamedNodeMap属性对象。【只读属性】
Node.previousSibling
紧跟在此节点之前的节点,具有相同的父节点。【只读属性】
如果此节点是父节点的第一个子节点,则此属性将为 None。
Node.nextSibling
紧跟在此节点之后的节点,具有相同的父节点。【只读属性】
如果这是父项的最后一个子项,则此属性为None。
Node.childNodes
此节点中包含的节点列表。【只读属性】
Node.firstChild
节点的第一个子节点。 【只读属性】
Node.lastChild
节点的最后一个子节点。 【只读属性】
Node.localName
tagName如果有一个冒号以下的部分,否则整个tagName。该值是一个字符串。
Node.prefix
tagName如果有一个冒号前面的部分,否则为空字符串。值是一个字符串,或None。
Node.namespaceURI
与元素名称关联的名称空间。这将是一个字符串或 None。【只读属性】
Node.nodeName
这对每种节点类型都有不同的含义; 【只读属性】
例如:tagName元素的name 属性或属性的属性。
对于所有节点类型,此属性的值将是字符串或None。
Node.nodeValue
这对每种节点类型都有不同的含义; 情况类似于nodeName。值是一个字符串或None。
Node.hasAttributes()
如果节点具有任何属性,则返回true。
Node.hasChildNodes()
如果节点具有任何子节点,则返回true。
Node.isSameNode(other)
如果other引用与此节点相同的节点,则返回true 。
这对于使用任何类型的代理体系结构的DOM实现特别有用(因为多个对象可以引用同一节点)。
Node.appendChild(newChild )
将新子节点添加到子节点列表末尾的此节点,返回newChild。如果节点已在树中,则首先将其删除。
Node.insertBefore(newChild,refChild )
在现有子项之前插入新的子节点。
refChild必须是此节点的子节点的情况; 如果没有,ValueError就会被提出来。 返回newChild。如果refChild是None,它插入newChild对象在儿童列表的末尾。
Node.removeChild(oldChild )
删除子节点。
oldChild必须是此节点的子节点; 如果没有, ValueError就会被提出来。 成功返回oldChild。如果 不再使用oldChild,unlink()则应调用其方法。
Node.replaceChild(newChild,oldChild )
用新节点替换现有节点。必须是 oldChild 是此节点的子节点的情况; 如果没有,ValueError就会被提出来。
Node.normalize()
加入相邻的文本节点,以便将所有文本段存储为单个 Text实例。
Node.cloneNode(deep)
克隆此节点。
设置深度也意味着克隆所有子节点。这将返回克隆。
一个NodeList表示节点序列。
NodeList.item(i )
如果有的话,请从序列中返回第i个项目,或者None。索引i不允许小于零或大于或等于序列的长度。
NodeList.length
序列中的节点数。
所有 NodeList实现必须包括对__len__()和的 支持 getitem();
如果DOM实现支持修改文档,则 NodeList实现还必须支持 setitem()和__delitem__()方法。
可以从DocumentType对象获得有关文档声明的符号和实体的信息。
在DocumentType为一个文件可以从Document对象的doctype 属性; 如果没有DOCTYPE文档声明,则将文档的doctype属性设置为None而不是此接口的实例。
DocumentType是一个特化Node,并添加以下属性:
DocumentType.publicId
文档类型定义的外部子集的公共标识符。这将是一个字符串或None。
DocumentType.systemId
文档类型定义的外部子集的系统标识符。这将是一个URI作为字符串,或None。
DocumentType.internalSubset
一个字符串,提供文档中的完整内部子集。这不包括括起子集的括号。如果文档没有内部子集,则应该是None。
DocumentType.name
DOCTYPE声明中给出的根元素的名称(如果存在)。
Document表示整个XML文档,包括其组成元素,属性,处理指令,注释等。
Document.documentElement
文档中唯一的根元素。
Document.createElement(tagName )
创建并返回一个新元素节点。
创建时,元素不会插入到文档中。需要使用其他方法(如insertBefore()或appendChild())显式插入它。
Document.createElementNS(namespaceURI,tagName )
使用命名空间创建并返回一个新元素。该标签名可以有一个前缀。创建时,元素不会插入到文档中。您需要使用其他方法(如insertBefore()或appendChild())显式插入它 。
Document.createTextNode(data)
创建并返回包含作为参数传递的数据的文本节点。与其他创建方法一样,此方法不会将节点插入树中。
Document.createComment(data)
创建并返回包含作为参数传递的数据的注释节点。与其他创建方法一样,此方法不会将节点插入树中。
Document.createProcessingInstruction(target, data)
创建并返回一个处理指令节点,其中包含作为参数传递的目标和 数据。与其他创建方法一样,此方法不会将节点插入树中。
Document.createAttribute(name)
创建并返回属性节点。
此方法不会将属性节点与任何特定元素相关联。
必须 setAttributeNode()在相应的Element对象上使用新创建的属性实例。
Document.createAttributeNS(namespaceURI,qualifiedName )
使用命名空间创建并返回属性节点。该标签名可以有一个前缀。
此方法不会将属性节点与任何特定元素相关联。
必须setAttributeNode()在相应的 Element对象上使用新创建的属性实例。
Document.getElementsByTagName(tagName )
搜索具有特定元素类型名称的所有后代(直接子项,子项的子项等)。
Document.getElementsByTagNameNS(namespaceURI,localName )
使用特定的名称空间URI和localname搜索所有后代(直接子项,子项的子项等)。localname是前缀后命名空间的一部分。
Element是它的子类Node,因此继承该类的所有属性。
Element.tagName
元素类型名称。在使用命名空间的文档中,它可能包含冒号。该值是一个字符串。
Element.getElementsByTagName(tagName )
与类中的等效方法相同Document。
Element.getElementsByTagNameNS(namespaceURI,localName )
与类中的等效方法相同Document。
Element.hasAttribute(name)
如果元素具有按名称命名的属性,则返回true 。
Element.hasAttributeNS(namespaceURI,localName )
如果元素具有namespaceURI和 localName命名的属性,则返回true 。
Element.getAttribute(name)
将name命名的属性的值作为字符串返回。如果不存在此类属性,则返回空字符串,就好像该属性没有值一样。
Element.getAttributeNode(attrname )
返回Attr由attrname命名的属性的节点。
Element.getAttributeNS(namespaceURI,localName )
将namespaceURI和localName指定的属性的值作为字符串返回。如果不存在此类属性,则返回空字符串,就好像该属性没有值一样。
Element.getAttributeNodeNS(namespaceURI,localName )
给定namespaceURI和localName,将属性值作为节点返回。
Element.removeAttribute(name)
按名称删除属性。如果没有匹配的属性, NotFoundErr则引发。
Element.removeAttributeNode(oldAttr )
从属性列表中删除并返回oldAttr(如果存在)。如果oldAttr不存在,NotFoundErr则引发。
Element.removeAttributeNS(namespaceURI,localName )
按名称删除属性。请注意,它使用localName,而不是qname。如果没有匹配的属性,则不会引发异常。
Element.setAttribute(名称,价值)
从字符串设置属性值。
Element.setAttributeNode(newAttr )
向元素添加新属性节点,如果name属性匹配,则在必要时替换现有属性。如果发生替换,将返回旧的属性节点。如果newAttr已经在使用中, InuseAttributeErr将会被提升。
Element.setAttributeNodeNS(newAttr )
向元素添加新属性节点,如果namespaceURI和localName属性匹配,则在必要时替换现有属性。如果发生替换,将返回旧的属性节点。如果newAttr 已经在使用中,InuseAttributeErr将会被提升。
Element.setAttributeNS(namespaceURI,qname,value )
给定namespaceURI和qname,从字符串设置属性值。请注意,qname是整个属性名称。这与上述不同。
Attr继承自Node,因此继承其所有属性。
Attr.name
属性名称。在使用命名空间的文档中,它可能包含冒号。
Attr.localName
如果有冒号,则冒号后面的名称部分,否则为整个名称。这是一个只读属性。
Attr.prefix
冒号前面的名称部分(如果有),否则为空字符串。
Attr.value
属性的文本值。这是nodeValue属性的同义词 。
NamedNodeMap并没有继承Node。
NamedNodeMap.length
属性列表的长度。
NamedNodeMap.item(index)
返回具有特定索引的属性。获得属性的顺序是任意的,但在DOM的生命周期中是一致的。每个项目都是一个属性节点。使用value属性获取其值。
Comment表示XML文档中的注释。它是子类 Node,但不能有子节点。
Comment.data
注释的内容为字符串。
该Text接口表示XML文档中的文本。
如果解析器和DOM实现支持DOM的XML扩展,则CDATA标记部分中包含的部分文本存储在CDATASection对象中。
这两个接口是相同的,但为nodeType属性提供了不同的值 。
这些接口扩展了Node接口。他们不能拥有子节点。
Text.data
文本节点的内容为字符串。
表示XML文档中的处理指令; 这继承自 Node接口,不能有子节点。
ProcessingInstruction.target
处理指令的内容直到第一个空白字符。【只读属性】
ProcessingInstruction.data
第一个空白字符后面的处理指令的内容。
DOMException: DOMException实例携带一个code属性,为特定异常提供适当的值。
异常xml.dom.DOMException
用于所有特定DOM异常的基本异常类。此异常类无法直接实例化。
异常xml.dom.DomstringSizeErr
当指定范围的文本不适合字符串时引发。这不知道在Python DOM实现中使用,但可以从不是用Python编写的DOM实现接收。
异常xml.dom.HierarchyRequestErr
尝试插入不允许节点类型的节点时引发。
异常xml.dom.IndexSizeErr
当方法的索引或大小参数为负或超过允许值时引发。
异常xml.dom.InuseAttributeErr
尝试插入Attr已存在于文档中其他位置的节点时触发。
异常xml.dom.InvalidAccessErr
如果底层对象不支持参数或操作,则引发此异常。
异常xml.dom.InvalidCharacterErr
当字符串参数包含XML 1.0建议中使用的上下文中不允许的字符时,会引发此异常。例如,尝试Element使用元素类型名称中的空格创建节点将导致引发此错误。
异常xml.dom.InvalidModificationErr
尝试修改节点类型时引发。
异常xml.dom.InvalidStateErr
尝试使用未定义或不再可用的对象时引发。
异常xml.dom.NamespaceErr
如果尝试以XML 建议中的命名空间不允许的方式更改任何对象,则会引发此异常。
异常xml.dom.NotFoundErr
引用的上下文中不存在节点时的异常。
例如,NamedNodeMap.removeNamedItem()如果传入的节点在地图中不存在, 则会引发此问题。
异常xml.dom.NotSupportedErr
当实现不支持所请求的对象或操作类型时引发。
异常xml.dom.NoDataAllowedErr
如果为不支持数据的节点指定了数据,则会引发此问题。
异常xml.dom.NoModificationAllowedErr
尝试修改不允许修改的对象(例如只读节点)时引发。
异常xml.dom.SyntaxErr
指定无效或非法字符串时引发。
异常xml.dom.WrongDocumentErr
当节点插入与其当前所属的文档不同的文档时引发,并且该实现不支持将节点从一个文档迁移到另一个文档。
DOM建议中定义的异常代码根据此表映射到上述异常:
Constant | Exception |
---|---|
DOMSTRING_SIZE_ERR | DomstringSizeErr |
HIERARCHY_REQUEST_ERR | HierarchyRequestErr |
INDEX_SIZE_ERR | IndexSizeErr |
INUSE_ATTRIBUTE_ERR | InuseAttributeErr |
INVALID_ACCESS_ERR | InvalidAccessErr |
INVALID_CHARACTER_ERR | InvalidCharacterErr |
INVALID_MODIFICATION_ERR | InvalidModificationErr |
INVALID_STATE_ERR | InvalidStateErr |
NAMESPACE_ERR | NamespaceErr |
NOT_FOUND_ERR | NotFoundErr |
NOT_SUPPORTED_ERR | NotSupportedErr |
NO_DATA_ALLOWED_ERR | NoDataAllowedErr |
NO_MODIFICATION_ALLOWED_ERR | NoModificationAllowedErr |
SYNTAX_ERR | SyntaxErr |
WRONG_DOCUMENT_ERR | WrongDocumentErr |