- class QDomNode链接到此处
QDomNode
类是 DOM 树中所有节点的基础类。 更多信息...继承自:
QDomProcessingInstruction
,QDomNotation
,QDomEntityReference
,QDomEntity
,QDomElement
,QDomDocumentType
,QDomDocumentFragment
,QDomDocument
,QDomCharacterData
,QDomText
,QDomComment
,QDomCDATASection
,QDomAttr
概要#
方法#
def
__init__()
def
appendChild()
def
attributes()
def
childNodes()
def
clear()
def
cloneNode()
def
columnNumber()
def
firstChild()
def
hasAttributes()
定义
isAttr()
定义
isComment()
定义
isDocument()
定义
isElement()
定义
isEntity()
定义
isNotation()
定义
isNull()
定义
isText()
定义
lastChild()
定义
lineNumber()
定义
localName()
定义
namedItem()
def
nextSibling()
def
nodeName()
def
nodeType()
def
nodeValue()
def
normalize()
def
__ne__()
def
__eq__()
def
ownerDocument()
def
parentNode()
def
prefix()
def
removeChild()
def
replaceChild()
def
save()
def
setNodeValue()
def
setPrefix()
def
toAttr()
def
toCDATASection()
def
toComment()
def
toDocument()
def
toDocumentType()
定义
toElement()
定义
toEntity()
定义
toNotation()
定义
toText()
备注
本文档可能包含从C++自动翻译到Python的片段。我们始终欢迎对片段翻译的贡献。如果您发现翻译存在问题,也可以通过在https:/bugreports.qt.io/projects/PYSIDE创建工单的方式告诉我们。
详细描述#
警告
此部分包含从C++自动翻译到Python的片段,可能包含错误。
DOM中的许多函数返回一个
QDomNode
对象。您可以使用
isAttr()
、isCDATASection()
、isDocumentFragment()
、isDocument()
、isDocumentType()
、isElement()
、isEntityReference()
、isText()
、isEntity()
、isNotation()
、isProcessingInstruction()
、isCharacterData()
和isComment()
等方法来检测节点类型。使用
QDomNode
的toAttr()
、toCDATASection()
、toDocumentFragment()
、toDocument()
、toDocumentType()
、toElement()
、toEntityReference()
、toText()
、toEntity()
、toNotation()
、toProcessingInstruction()
、toCharacterData()
或者toComment()
方法,可以将一个节点转换为它的子类之一。您可以使用clear()
方法将节点转换为空节点。QDomNode
类的副本通过显式共享其数据。这意味着修改一个节点将更改所有副本。这与返回QDomNode
的功能结合使用尤为有用,例如firstChild()
。您可以通过调用cloneNode()
方法来创建节点的独立(深度)复制。一个
QDomNode
可以是 null,类似于None
。复制一个 null 节点会产生另一个 null 节点。不可能修改 null 节点,但可以将其分配给另一个节点(可能是非 null 节点)。在这种情况下,null 节点的副本将保持 null。您可以通过调用isNull()
来检查一个QDomNode
是否是 null。QDomNode
的空构造函数(或其任何派生类)会创建一个 null 节点。节点可以通过
insertBefore()
,insertAfter()
或appendChild()
插入。您可以使用replaceChild()
将一个节点替换为另一个节点,并使用removeChild()
移除节点。要遍历节点,请使用
firstChild()
获取节点的第一个子节点(如果有的话),并使用nextSibling()
遍历。QDomNode
还提供了lastChild()
,previousSibling()
和parentNode()
。要找到具有特定节点名称的第一个子节点,请使用namedItem()
。要检查一个节点是否有子节点,请使用
hasChildNodes()
,并使用childNodes()
获取一个节点所有子节点的列表。节点名称及其值(其含义取决于类型)分别由
nodeName()
和nodeValue()
返回。节点的类型由nodeType()
返回。可以使用setNodeValue()
设置节点的值。属于此节点的文档由
ownerDocument()
返回。可以使用
normalize()
将相邻的QDomText
节点合并为一个单个节点。QDomElement
节点具有属性,可以通过attributes()
检索。QDomElement
和QDomAttr
节点可以具有命名空间,可以通过namespaceURI()
检索。其局部名称通过localName()
检索,前缀通过prefix()
检索。前缀可以通过setPrefix()
设置。您可以使用
save()
将节点的XML表示写入文本流。以下示例在一个XML文档中查找第一个元素,并打印其直接子节点的所有元素的名称。
d = QDomDocument() someXML = QString() d.setContent(someXML) n = d.firstChild() while not n.isNull(): if n.isElement(): e = n.toElement() print("Element name: ", qPrintable(e.tagName()), '\n') break n = n.nextSibling()
有关文档对象模型(Document Object Model)的更多信息,请参阅第1级和第2级核心。有关DOM实现的更通用介绍,请参阅
QDomDocument
文档。- class NodeType#
这个枚举定义了节点类型
常量
描述
QDomNode.ElementNode
QDomNode.AttributeNode
QDomNode.TextNode
QDomNode.CDATASectionNode
QDomNode.EntityReferenceNode
QDomNode.EntityNode
QDomNode.ProcessingInstructionNode
QDomNode.CommentNode
QDomNode.DocumentNode
QDomNode.DocumentTypeNode
QDomNode.DocumentFragmentNode
QDomNode.NotationNode
QDomNode.BaseNode
QDomNode.CharacterDataNode
- class EncodingPolicy#
此枚举指定how
save()
在序列化时确定使用什么编码。常量
描述
QDomNode-EncodingFromDocument
编码是从文档中获取的。
QDomNode-EncodingFromTextStream
编码是从 QTextStream 中获取的。
另请参阅
构建 n 的副本。
副本的数据是共享的(浅拷贝):修改一个节点将同时改变另一个节点。如果您想进行深拷贝,请使用
cloneNode()
。- __init__()
构建一个
null
节点。将
newChild
作为节点的最后一个子节点追加。如果
newChild
是另一个节点的子节点,则它将作为本节点的子节点重新父化。如果newChild
是此节点的子节点,则其在子节点列表中的位置将改变。如果
newChild
是一个QDomDocumentFragment
,则该片段的子节点将从片段中删除并追加。如果
newChild
是一个QDomElement
并且此节点是已经作为一个元素节点子节点的QDomDocument
,则不将newChild
添加为子节点,并返回一个空节点。在成功的情况下返回对新节点
newChild
的引用,或者在失败的情况下返回一个null node
。在空节点(例如使用默认构造函数创建的)上调用此函数没有任何作用,并返回一个
null node
。DOM规范不允许插入属性节点,但出于历史原因,QDom仍然接受它们。
- attributes()#
- 返回类型:
返回所有属性的命名节点映射。仅提供了
QDomElement
对象的属性。更改映射中的属性也将更改此
QDomNode
的属性。- childNodes()#
- 返回类型:
警告
此部分包含从C++自动翻译到Python的片段,可能包含错误。
返回所有直接子节点的列表。
通常会在此函数上调用的对象是
QDomElement
对象。例如,如果XML文档看起来像这样
<body> <h1>Heading</h1> <p>Hello <b>you</b></p> </body>
那么“body”元素的子节点列表将包含由 <h1> 标签创建的节点及由 <p> 标签创建的节点。
列表中的节点不会被复制;因此更改列表中的节点也会更改此节点的子节点。
另请参阅
- clear()#
将节点转换为空节点;如果它之前不是空节点,则删除其类型和内容。
另请参阅
创建
QDomNode
的深度(而非浅度)副本。如果
deep
为true,则克隆将递归进行,这意味着节点的所有子节点也将被深度复制。如果deep
为false,则只有节点自身会被复制,复制的节点将没有子节点。- columnNumber()#
- 返回类型:
int
对于通过
setContent()
创建的节点,此函数返回节点解析所在的XML文档中的列号。否则返回-1。另请参阅
返回节点的第一个子节点。如果没有子节点,则返回一个
null node
。修改返回的节点也将修改文档树中的节点。另请参阅
- firstChildElement([tagName=""[, namespaceURI=""]])#
- 参数:
tagName – str
namespaceURI – str
- 返回类型:
返回第一个具有标签名称
tagName
和命名空间URInamespaceURI
的子节点。如果tagName
为空,则返回具有namespaceURI
的第一个子节点,如果namespaceURI
为空,则返回具有tagName
的第一个子节点。如果两个参数都为空,则返回第一个子节点。如果在子节点中不存在这样的节点,则返回空元素。- hasAttributes()#
- 返回类型:
bool
如果节点有属性,则返回
true
;否则返回false
。另请参阅
-
hasChildNodes()
- 返回类型:
bool
如果节点有一个或多个子节点,则返回 true
;否则返回 false
。
在子节点 refChild
之后插入节点 newChild
。 refChild
必须是此节点的直接子节点。如果 refChild
是 null
,则 newChild
作为此节点的最后一个子节点被附加。
如果 newChild
是另一个节点的子节点,则它将作为本节点的子节点重新父化。如果 newChild
是此节点的子节点,则其在子节点列表中的位置将改变。
如果 newChild
是一个 QDomDocumentFragment
,则该片段的子节点将从片段中移除,并插入到 refChild
之后。
在成功的情况下返回对新节点 newChild
的引用,或者在失败的情况下返回一个 null node
。
DOM 规范禁止插入属性节点,但鉴于历史原因 QDom 无视这一点。
在子节点 refChild
之前插入节点 newChild
。 refChild
必须是此节点的直接子节点。如果 refChild
是 null
,则 newChild
作为节点的第一个子节点被插入。
如果 newChild
是另一个节点的子节点,则它将作为本节点的子节点重新父化。如果 newChild
是此节点的子节点,则其在子节点列表中的位置将改变。
如果 newChild
是一个 QDomDocumentFragment
,则片段的子节点将从片段中移除,并插入到 refChild
之前。
在成功的情况下返回对新节点 newChild
的引用,或者在失败的情况下返回一个 null node
。
DOM 规范禁止插入属性节点,但鉴于历史原因 QDom 无视这一点。
- isAttr()#
- 返回类型:
bool
如果节点是属性,则返回 true
;否则返回 false
。
如果这个函数返回 true
,并不意味着该对象是 QDomAttribute;你可以使用 toAttribute() 方法获取 QDomAttribute 对象。
另请参阅
- isCDATASection()#
- 返回类型:
bool
如果节点是 CDATA 部分,则返回 true
;否则返回 false
。
如果这个函数返回 true
,并不意味着该对象是 QDomCDATASection;你可以使用 toCDATASection() 方法获取 QDomCDATASection 对象。
另请参阅
- isCharacterData()#
- 返回类型:
bool
如果节点是字符数据节点,则返回 true
;否则返回 false
。
如果这个函数返回 true
,并不意味着该对象是 QDomCharacterData;你可以使用 toCharacterData() 方法获取 QDomCharacterData 对象。
另请参阅
- isComment()#
- 返回类型:
bool
如果节点是注释,则返回 true
;否则返回 false
。
如果这个函数返回 true
,并不意味着该对象是 QDomComment;你可以使用 toComment() 方法获取 QDomComment 对象。
另请参阅
- isDocument()#
- 返回类型:
bool
如果节点是文档,则返回 true
;否则返回 false
。
如果此函数返回 true
,并不表示该对象是一个 QDomDocument
;您可以通过调用 toDocument()
来获取 QDomDocument
对象。
另请参阅
- isDocumentFragment()#
- 返回类型:
bool
如果节点是文档片段,则返回 true
;否则返回 false
。
如果此函数返回 true
,并不表示该对象是一个 QDomDocumentFragment
;您可以通过调用 toDocumentFragment()
来获取 QDomDocumentFragment
对象。
另请参阅
- isDocumentType()#
- 返回类型:
bool
如果节点是文档类型,则返回 true
;否则返回 false
。
如果此函数返回 true
,并不表示该对象是一个 QDomDocumentType
;您可以通过调用 toDocumentType()
来获取 QDomDocumentType
对象。
另请参阅
- isElement()#
- 返回类型:
bool
如果节点是元素,则返回 true
;否则返回 false
。
如果此函数返回 true
,并不表示该对象是一个 QDomElement
;您可以通过调用 toElement()
来获取 QDomElement
对象。
另请参阅
- isEntity()#
- 返回类型:
bool
如果节点是实体,则返回 true
;否则返回 false
。
如果此函数返回true
,那么这并不意味着该对象是一个QDomEntity
;你可以使用toEntity()
来获取QDomEntity
。
另请参阅
- isEntityReference()#
- 返回类型:
bool
如果节点是一个实体引用,返回true
;否则返回false
。
如果此函数返回true
,并不意味着该对象是一个QDomEntityReference
;你可以使用toEntityReference()
来获取QDomEntityReference
。
另请参阅
- isNotation()#
- 返回类型:
bool
如果节点是一个命名空间,返回true
;否则返回false
。
如果此函数返回true
,并不意味着该对象是一个QDomNotation
;你可以使用toNotation()
来获取QDomNotation
。
另请参阅
- isNull()#
- 返回类型:
bool
如果此节点为null(即没有类型或内容),返回true
;否则返回false
。
- isProcessingInstruction()#
- 返回类型:
bool
如果节点是一个处理指令,返回true
;否则返回false
。
如果此函数返回true
,并不意味着该对象是一个QDomProcessingInstruction
;你可以使用toProcessingInstruction()
来获取QProcessingInstruction。
- isSupported(feature, version)#
- 参数:
特性 – str
版本 – str
- 返回类型:
bool
如果DOM实现实现了特性 feature
并且该特性在该节点的 version
版本中得到支持,则返回 true
;否则返回 false
。
另请参阅
- isText()#
- 返回类型:
bool
如果节点是文本节点,则返回 true
;否则返回 false
。
如果此函数返回 true
,则并不意味着此对象是 QDomText
; 您可以使用 toText()
获取 QDomText
。
另请参阅
返回节点的最后子节点。如果没有子节点,则返回一个 null node
节点。更改返回的节点将同时更改文档树中的节点。
另请参阅
- lastChildElement([tagName=""[, namespaceURI=""]])#
- 参数:
tagName – str
namespaceURI – str
- 返回类型:
返回具有标签名 tagName
和命名空间URI namespaceURI
的最后一个子元素。如果 tagName
为空,则返回具有 namespaceURI
的最后一个子元素,如果 namespaceURI
为空,则返回具有 tagName
的最后一个子元素。如果两个参数都为空,则返回最后一个子元素。如果没有这样的子元素,则返回一个空元素。
- lineNumber()#
- 返回类型:
int
对于由 setContent() 方法创建的节点,此函数返回节点在XML文档中解析的行号。否则,返回-1。
- localName()#
- 返回类型:
str
如果节点使用命名空间,此函数返回节点的本地名;否则返回空字符串。
只有类型为 ElementNode
或 AttributeNode
的节点可以拥有命名空间。命名空间必须在创建时指定;之后不能添加命名空间。
返回第一个直接子节点,其名称由 nodeName()
等于 name
。
如果不存在这样的直接子节点,则返回一个 null node
。
另请参阅
- namespaceURI()#
- 返回类型:
str
返回此节点的命名空间URI或空字符串(如果节点没有命名空间URI)。
只有类型为 ElementNode
或 AttributeNode
的节点可以拥有命名空间。必须在其创建时指定命名空间URI,之后不能更改。
警告
此部分包含从C++自动翻译到Python的片段,可能包含错误。
返回文档树中的下一个兄弟节点。更改返回的节点也将更改文档树中的节点。
如果您有如下XML
<h1>Heading</h1> <p>The text...</p> <h2>Next heading</h2>
和这个 QDomNode
表示 <p> 标签,nextSibling() 将返回表示 <h2> 标签的节点。
另请参阅
- nextSiblingElement([taName=""[, namespaceURI=""]])#
- 参数:
taName – str
namespaceURI – str
- 返回类型:
返回具有标签名 tagName
和命名空间URI namespaceURI
的下一个兄弟元素。如果 tagName
为空,则返回具有 namespaceURI
的下一个兄弟元素,如果 namespaceURI
为空,则返回具有 tagName
的下一个兄弟子元素。如果两者都为空,则返回下一个兄弟元素。如果不存在此类兄弟元素,则返回空元素。
- nodeName()#
- 返回类型:
str
返回节点的名称。
名称的含义取决于子类
名称
含义
属性的名称
字符串 “#cdata-section”
字符串 “#comment”
字符串 “#document”
字符串 “#document-fragment”
文档类型的名称
标签名
实体的名称
引用实体的名称
记法的名称
处理指令的目标
字符串 “#text”
备注
该函数在处理元素和属性节点的名称时,不考虑命名空间的存在。因此,返回的名称可以包含任何可能存在的命名空间前缀。要获取元素或属性的节点名称,请使用 localName()
;要获取命名空间前缀,请使用 namespaceURI()
。
另请参阅
返回节点的类型。
- nodeValue()#
- 返回类型:
str
返回节点的值。
值的含义取决于子类
名称
含义
属性值
CDATA部分的文本内容
注释
处理指令的数据
文本内容
其他所有子类都没有节点值,将返回空字符串。
另请参阅
- normalize()#
在元素上调用normalize()函数会将元素的所有子元素转换成标准形式。这意味着相邻的QDomText对象将合并为一个文本对象(QDomCDATASection节点不会合并)。
如果n和该DOM节点不相等,则返回true;否则返回false。
警告
此部分包含从C++自动翻译到Python的片段,可能包含错误。
如果n和该DOM节点相等,则返回true;否则返回false。
任何QDomNode的实例都作为QDomDocument中底层数据结构的引用。相等性测试检查这两个引用是否指向相同的底层节点。例如
document = QDomDocument() element1 = document.documentElement() element2 = element1
两个节点(QDomElement是一个QDomNode子类)都指向文档的根元素,并且element1 == element2
将返回true。另一方面
element3 = document.createElement("MyElement") element4 = document.createElement("MyElement")
尽管这两个节点都是包含相同名称的空元素,但element3 == element4
将返回false,因为它们指向底层数据结构中的不同节点。
- ownerDocument()#
- 返回类型:
返回此节点所属的文档。
返回父节点。如果此节点没有父节点,则返回一个空节点(即返回一个isNull()返回true的节点)。
- prefix()#
- 返回类型:
str
返回节点的命名空间前缀,如果节点没有命名空间前缀,则返回空字符串。
只有类型为 ElementNode
或 AttributeNode
的节点可以有命名空间。命名空间前缀必须在创建时指定。如果节点使用命名空间前缀创建,可以使用 setPrefix()
方法修改它。
如果您使用 createElement()
或 createAttribute()
创建元素或属性,则前缀为空字符串。如果您使用 createElementNS()
或 createAttributeNS()
而不是前者,则前缀不会是空字符串;但如果名称没有前缀,它可能仍然是空字符串。
警告
此部分包含从C++自动翻译到Python的片段,可能包含错误。
返回文档树中的前一个兄弟节点。修改返回的节点也会修改文档树中的节点。
例如,如果您有如下XML:
<h1>Heading</h1> <p>The text...</p> <h2>Next heading</h2>
这个 QDomNode
代表了 <p> 标签,previousSibling() 将返回代表 <h1> 标签的节点。
另请参阅
- previousSiblingElement([tagName=""[, namespaceURI=""]])#
- 参数:
tagName – str
namespaceURI – str
- 返回类型:
返回具有标签名 tagName
和命名空间URI namespaceURI
的前一兄弟元素。如果 tagName
为空,则返回具有 namespaceURI
的前一兄弟元素,如果 namespaceURI
为空,则返回具有 tagName
的前一兄弟元素。如果两个参数都为空,则返回前一兄弟元素。如果不存在这样的兄弟元素,则返回一个空元素。
从子元素列表中移除 oldChild
。 oldChild
必须是此节点的直接子节点。
如果成功,则返回对 oldChild
的新引用;如果失败,则返回一个 null node
。
用 newChild
替换 oldChild
。 oldChild
必须是此节点的直接子节点。
如果 newChild
是另一个节点的子节点,则它将作为本节点的子节点重新父化。如果 newChild
是此节点的子节点,则其在子节点列表中的位置将改变。
如果 newChild
是一个 QDomDocumentFragment
,则使用片段的所有子元素替换 oldChild
。
如果成功,则返回对 oldChild
的新引用;如果失败,则返回一个 null node
。
- save(arg__1, arg__2[, arg__3=QDomNode.EncodingFromDocument])#
- 参数:
arg__1 –
QTextStream
arg__2 – int
arg__3 –
EncodingPolicy
将节点及其所有子节点的XML表示写入流 stream
中。此函数使用 indent
作为缩进节点所使用的空格量。
如果文档包含无效的XML字符或不能在给定的编码中编码的字符,则结果和行为是未定义的。
如果 encodingPolicy
是 EncodingFromDocument
并且此节点是文档节点,则将文本流 stream
的编码设置为通过处理名为“xml”的处理指令作为XML声明,如果存在的话,否则默认为UTF-8。XML声明不是处理指令,但是这种行为存在是出于历史原因。如果此节点不是文档节点,则使用文本流的编码。
如果 encodingPolicy
是 EncodingFromTextStream
并且此节点是文档节点,则此函数的行为与 save(QTextStream &str, int indent) 相同,除了使用文本流 stream
中指定的编码。
如果文档包含无效的XML字符或不能在给定的编码中编码的字符,则结果和行为是未定义的。
- setNodeValue(arg__1)#
- 参数:
arg__1 – str
将节点的值设置为 v
。
另请参阅
- setPrefix(pre)#
- 参数:
pre – str
如果节点具有命名空间前缀,此函数将节点的命名空间前缀更改为 pre
。否则此函数不执行任何操作。
只有类型为 ElementNode
或 AttributeNode
的节点可以有命名空间。命名空间前缀必须在创建时指定;之后无法添加命名空间前缀。
将一个QDomNode
对象转换为QDomAttr
对象。如果节点不是一个属性,返回的对象将是null
。
另请参阅
- toCDATASection()#
- 返回类型:
将一个QDomNode
对象转换为QDomCDATASection
对象。如果节点不是一个CDATA区域,返回的对象将是null
。
另请参阅
- toCharacterData()#
- 返回类型:
将一个QDomNode
对象转换为QDomCharacterData
对象。如果节点不是字符数据节点,返回的对象将是null
。
另请参阅
- toComment()#
- 返回类型:
将一个QDomNode
对象转换为QDomComment
对象。如果节点不是注释,返回的对象将是null
。
另请参阅
- toDocument()#
- 返回类型:
将一个 QDomNode
转换为 QDomDocument
. 如果节点不是文档,则返回的对象将是 null
.
另请参阅
- toDocumentFragment()#
- 返回类型:
将一个 QDomNode
转换为 QDomDocumentFragment
. 如果节点不是文档片段,则返回的对象将是 null
.
另请参阅
- toDocumentType()#
- 返回类型:
将一个 QDomNode
转换为 QDomDocumentType
. 如果节点不是文档类型,则返回的对象将是 null
.
另请参阅
- toElement()#
- 返回类型:
将一个 QDomNode
转换为 QDomElement
. 如果节点不是元素,则返回的对象将是 null
.
另请参阅
- toEntity()#
- 返回类型:
将一个 QDomNode
转换为 QDomEntity
. 如果节点不是实体,则返回的对象将是 null
.
另请参阅
- toEntityReference()#
- 返回类型:
将一个 QDomNode
转换为一个 QDomEntityReference
. 如果该节点不是实体引用,则返回的对象将是 null
.
另请参阅
- toNotation()#
- 返回类型:
将一个 QDomNode
转换为一个 QDomNotation
. 如果该节点不是标注,则返回的对象将是 null
.
另请参阅
- toProcessingInstruction()#
将一个 QDomNode
转换为一个 QDomProcessingInstruction
. 如果该节点不是处理指令,则返回的对象将是 null
.
将一个 QDomNode
转换为一个 QDomText
. 如果该节点不是文本,则返回的对象将是 null
.
另请参阅