class QDomNode链接到此处

QDomNode 类是 DOM 树中所有节点的基础类。 更多信息...

继承自: QDomProcessingInstructionQDomNotationQDomEntityReferenceQDomEntityQDomElementQDomDocumentTypeQDomDocumentFragmentQDomDocumentQDomCharacterDataQDomTextQDomCommentQDomCDATASectionQDomAttr

概要#

方法#

备注

本文档可能包含从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()等方法来检测节点类型。

使用QDomNodetoAttr()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()检索。

QDomElementQDomAttr节点可以具有命名空间,可以通过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 对象,即不是 QDomNode 子类。

QDomNode.CharacterDataNode

class EncodingPolicy#

此枚举指定how save() 在序列化时确定使用什么编码。

常量

描述

QDomNode-EncodingFromDocument

编码是从文档中获取的。

QDomNode-EncodingFromTextStream

编码是从 QTextStream 中获取的。

另请参阅

save()

__init__(arg__1)#
参数:

arg__1 - QDomNode

构建 n 的副本。

副本的数据是共享的(浅拷贝):修改一个节点将同时改变另一个节点。如果您想进行深拷贝,请使用 cloneNode()

__init__()

构建一个 null 节点。

appendChild(newChild)#
参数:

newChild - QDomNode

返回类型:

QDomNode

newChild 作为节点的最后一个子节点追加。

如果 newChild 是另一个节点的子节点,则它将作为本节点的子节点重新父化。如果 newChild 是此节点的子节点,则其在子节点列表中的位置将改变。

如果 newChild 是一个 QDomDocumentFragment ,则该片段的子节点将从片段中删除并追加。

如果 newChild 是一个 QDomElement 并且此节点是已经作为一个元素节点子节点的 QDomDocument,则不将 newChild 添加为子节点,并返回一个空节点。

在成功的情况下返回对新节点 newChild 的引用,或者在失败的情况下返回一个 null node

在空节点(例如使用默认构造函数创建的)上调用此函数没有任何作用,并返回一个 null node

DOM规范不允许插入属性节点,但出于历史原因,QDom仍然接受它们。

attributes()#
返回类型:

QDomNamedNodeMap

返回所有属性的命名节点映射。仅提供了 QDomElement 对象的属性。

更改映射中的属性也将更改此 QDomNode 的属性。

childNodes()#
返回类型:

QDomNodeList

警告

此部分包含从C++自动翻译到Python的片段,可能包含错误。

返回所有直接子节点的列表。

通常会在此函数上调用的对象是 QDomElement 对象。

例如,如果XML文档看起来像这样

<body>
<h1>Heading</h1>
<p>Hello <b>you</b></p>
</body>

那么“body”元素的子节点列表将包含由 &lt;h1&gt; 标签创建的节点及由 &lt;p&gt; 标签创建的节点。

列表中的节点不会被复制;因此更改列表中的节点也会更改此节点的子节点。

另请参阅

firstChild() lastChild()

clear()#

将节点转换为空节点;如果它之前不是空节点,则删除其类型和内容。

另请参阅

isNull()

cloneNode([deep=true])#
参数:

deep – bool

返回类型:

QDomNode

创建 QDomNode 的深度(而非浅度)副本。

如果 deep 为true,则克隆将递归进行,这意味着节点的所有子节点也将被深度复制。如果 deep 为false,则只有节点自身会被复制,复制的节点将没有子节点。

columnNumber()#
返回类型:

int

对于通过 setContent() 创建的节点,此函数返回节点解析所在的XML文档中的列号。否则返回-1。

另请参阅

lineNumber() setContent()

firstChild()#
返回类型:

QDomNode

返回节点的第一个子节点。如果没有子节点,则返回一个 null node。修改返回的节点也将修改文档树中的节点。

另请参阅

lastChild() childNodes()

firstChildElement([tagName=""[, namespaceURI=""]])#
参数:
  • tagName – str

  • namespaceURI – str

返回类型:

QDomElement

返回第一个具有标签名称 tagName 和命名空间URI namespaceURI 的子节点。如果 tagName 为空,则返回具有 namespaceURI 的第一个子节点,如果 namespaceURI 为空,则返回具有 tagName 的第一个子节点。如果两个参数都为空,则返回第一个子节点。如果在子节点中不存在这样的节点,则返回空元素。

hasAttributes()#
返回类型:

bool

如果节点有属性,则返回 true;否则返回 false

另请参阅

attributes()

hasChildNodes()
返回类型:

bool

如果节点有一个或多个子节点,则返回 true;否则返回 false

insertAfter(newChild, refChild)#
参数:
返回类型:

QDomNode

在子节点 refChild 之后插入节点 newChildrefChild 必须是此节点的直接子节点。如果 refChildnull,则 newChild 作为此节点的最后一个子节点被附加。

如果 newChild 是另一个节点的子节点,则它将作为本节点的子节点重新父化。如果 newChild 是此节点的子节点,则其在子节点列表中的位置将改变。

如果 newChild 是一个 QDomDocumentFragment,则该片段的子节点将从片段中移除,并插入到 refChild 之后。

在成功的情况下返回对新节点 newChild 的引用,或者在失败的情况下返回一个 null node

DOM 规范禁止插入属性节点,但鉴于历史原因 QDom 无视这一点。

insertBefore(newChild, refChild)#
参数:
返回类型:

QDomNode

在子节点 refChild 之前插入节点 newChildrefChild 必须是此节点的直接子节点。如果 refChildnull,则 newChild 作为节点的第一个子节点被插入。

如果 newChild 是另一个节点的子节点,则它将作为本节点的子节点重新父化。如果 newChild 是此节点的子节点,则其在子节点列表中的位置将改变。

如果 newChild 是一个 QDomDocumentFragment,则片段的子节点将从片段中移除,并插入到 refChild 之前。

在成功的情况下返回对新节点 newChild 的引用,或者在失败的情况下返回一个 null node

DOM 规范禁止插入属性节点,但鉴于历史原因 QDom 无视这一点。

isAttr()#
返回类型:

bool

如果节点是属性,则返回 true;否则返回 false

如果这个函数返回 true,并不意味着该对象是 QDomAttribute;你可以使用 toAttribute() 方法获取 QDomAttribute 对象。

另请参阅

toAttr()

isCDATASection()#
返回类型:

bool

如果节点是 CDATA 部分,则返回 true;否则返回 false

如果这个函数返回 true,并不意味着该对象是 QDomCDATASection;你可以使用 toCDATASection() 方法获取 QDomCDATASection 对象。

另请参阅

toCDATASection()

isCharacterData()#
返回类型:

bool

如果节点是字符数据节点,则返回 true;否则返回 false

如果这个函数返回 true,并不意味着该对象是 QDomCharacterData;你可以使用 toCharacterData() 方法获取 QDomCharacterData 对象。

另请参阅

toCharacterData()

isComment()#
返回类型:

bool

如果节点是注释,则返回 true;否则返回 false

如果这个函数返回 true,并不意味着该对象是 QDomComment;你可以使用 toComment() 方法获取 QDomComment 对象。

另请参阅

toComment()

isDocument()#
返回类型:

bool

如果节点是文档,则返回 true;否则返回 false

如果此函数返回 true,并不表示该对象是一个 QDomDocument ;您可以通过调用 toDocument() 来获取 QDomDocument 对象。

另请参阅

toDocument()

isDocumentFragment()#
返回类型:

bool

如果节点是文档片段,则返回 true;否则返回 false

如果此函数返回 true,并不表示该对象是一个 QDomDocumentFragment ;您可以通过调用 toDocumentFragment() 来获取 QDomDocumentFragment 对象。

另请参阅

toDocumentFragment()

isDocumentType()#
返回类型:

bool

如果节点是文档类型,则返回 true;否则返回 false

如果此函数返回 true,并不表示该对象是一个 QDomDocumentType ;您可以通过调用 toDocumentType() 来获取 QDomDocumentType 对象。

另请参阅

toDocumentType()

isElement()#
返回类型:

bool

如果节点是元素,则返回 true;否则返回 false

如果此函数返回 true,并不表示该对象是一个 QDomElement ;您可以通过调用 toElement() 来获取 QDomElement 对象。

另请参阅

toElement()

isEntity()#
返回类型:

bool

如果节点是实体,则返回 true;否则返回 false

如果此函数返回true,那么这并不意味着该对象是一个QDomEntity;你可以使用toEntity()来获取QDomEntity

另请参阅

toEntity()

isEntityReference()#
返回类型:

bool

如果节点是一个实体引用,返回true;否则返回false

如果此函数返回true,并不意味着该对象是一个QDomEntityReference;你可以使用toEntityReference()来获取QDomEntityReference

另请参阅

toEntityReference()

isNotation()#
返回类型:

bool

如果节点是一个命名空间,返回true;否则返回false

如果此函数返回true,并不意味着该对象是一个QDomNotation;你可以使用toNotation()来获取QDomNotation

另请参阅

toNotation()

isNull()#
返回类型:

bool

如果此节点为null(即没有类型或内容),返回true;否则返回false

isProcessingInstruction()#
返回类型:

bool

如果节点是一个处理指令,返回true;否则返回false

如果此函数返回true,并不意味着该对象是一个QDomProcessingInstruction;你可以使用toProcessingInstruction()来获取QProcessingInstruction。

isSupported(feature, version)#
参数:
  • 特性 – str

  • 版本 – str

返回类型:

bool

如果DOM实现实现了特性 feature 并且该特性在该节点的 version 版本中得到支持,则返回 true;否则返回 false

另请参阅

hasFeature()

isText()#
返回类型:

bool

如果节点是文本节点,则返回 true;否则返回 false

如果此函数返回 true,则并不意味着此对象是 QDomText ; 您可以使用 toText() 获取 QDomText

另请参阅

toText()

lastChild()#
返回类型:

QDomNode

返回节点的最后子节点。如果没有子节点,则返回一个 null node 节点。更改返回的节点将同时更改文档树中的节点。

另请参阅

firstChild() childNodes()

lastChildElement([tagName=""[, namespaceURI=""]])#
参数:
  • tagName – str

  • namespaceURI – str

返回类型:

QDomElement

返回具有标签名 tagName 和命名空间URI namespaceURI 的最后一个子元素。如果 tagName 为空,则返回具有 namespaceURI 的最后一个子元素,如果 namespaceURI 为空,则返回具有 tagName 的最后一个子元素。如果两个参数都为空,则返回最后一个子元素。如果没有这样的子元素,则返回一个空元素。

lineNumber()#
返回类型:

int

对于由 setContent() 方法创建的节点,此函数返回节点在XML文档中解析的行号。否则,返回-1。

localName()#
返回类型:

str

如果节点使用命名空间,此函数返回节点的本地名;否则返回空字符串。

只有类型为 ElementNodeAttributeNode 的节点可以拥有命名空间。命名空间必须在创建时指定;之后不能添加命名空间。

namedItem(name)#
参数:

name – str

返回类型:

QDomNode

返回第一个直接子节点,其名称由 nodeName() 等于 name

如果不存在这样的直接子节点,则返回一个 null node

另请参阅

nodeName()

namespaceURI()#
返回类型:

str

返回此节点的命名空间URI或空字符串(如果节点没有命名空间URI)。

只有类型为 ElementNodeAttributeNode 的节点可以拥有命名空间。必须在其创建时指定命名空间URI,之后不能更改。

nextSibling()#
返回类型:

QDomNode

警告

此部分包含从C++自动翻译到Python的片段,可能包含错误。

返回文档树中的下一个兄弟节点。更改返回的节点也将更改文档树中的节点。

如果您有如下XML

<h1>Heading</h1>
<p>The text...</p>
<h2>Next heading</h2>

和这个 QDomNode 表示 <p> 标签,nextSibling() 将返回表示 <h2> 标签的节点。

另请参阅

previousSibling()

nextSiblingElement([taName=""[, namespaceURI=""]])#
参数:
  • taName – str

  • namespaceURI – str

返回类型:

QDomElement

返回具有标签名 tagName 和命名空间URI namespaceURI 的下一个兄弟元素。如果 tagName 为空,则返回具有 namespaceURI 的下一个兄弟元素,如果 namespaceURI 为空,则返回具有 tagName 的下一个兄弟子元素。如果两者都为空,则返回下一个兄弟元素。如果不存在此类兄弟元素,则返回空元素。

nodeName()#
返回类型:

str

返回节点的名称。

名称的含义取决于子类

名称

含义

QDomAttr

属性的名称

QDomCDATASection

字符串 “#cdata-section”

QDomComment

字符串 “#comment”

QDomDocument

字符串 “#document”

QDomDocumentFragment

字符串 “#document-fragment”

QDomDocumentType

文档类型的名称

QDomElement

标签名

QDomEntity

实体的名称

QDomEntityReference

引用实体的名称

QDomNotation

记法的名称

QDomProcessingInstruction

处理指令的目标

QDomText

字符串 “#text”

备注

该函数在处理元素和属性节点的名称时,不考虑命名空间的存在。因此,返回的名称可以包含任何可能存在的命名空间前缀。要获取元素或属性的节点名称,请使用 localName();要获取命名空间前缀,请使用 namespaceURI()

另请参阅

nodeValue()

nodeType()#
返回类型:

节点类型

返回节点的类型。

nodeValue()#
返回类型:

str

返回节点的值。

值的含义取决于子类

名称

含义

QDomAttr

属性值

QDomCDATASection

CDATA部分的文本内容

QDomComment

注释

QDomProcessingInstruction

处理指令的数据

QDomText

文本内容

其他所有子类都没有节点值,将返回空字符串。

另请参阅

setNodeValue() nodeName()

normalize()#

在元素上调用normalize()函数会将元素的所有子元素转换成标准形式。这意味着相邻的QDomText对象将合并为一个文本对象(QDomCDATASection节点不会合并)。

__ne__(arg__1)#
参数:

arg__1 - QDomNode

返回类型:

bool

如果n和该DOM节点不相等,则返回true;否则返回false

__eq__(arg__1)#
参数:

arg__1 - QDomNode

返回类型:

bool

警告

此部分包含从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()#
返回类型:

QDomDocument

返回此节点所属的文档。

parentNode()#
返回类型:

QDomNode

返回父节点。如果此节点没有父节点,则返回一个空节点(即返回一个isNull()返回true的节点)。

prefix()#
返回类型:

str

返回节点的命名空间前缀,如果节点没有命名空间前缀,则返回空字符串。

只有类型为 ElementNodeAttributeNode 的节点可以有命名空间。命名空间前缀必须在创建时指定。如果节点使用命名空间前缀创建,可以使用 setPrefix() 方法修改它。

如果您使用 createElement()createAttribute() 创建元素或属性,则前缀为空字符串。如果您使用 createElementNS()createAttributeNS() 而不是前者,则前缀不会是空字符串;但如果名称没有前缀,它可能仍然是空字符串。

previousSibling()#
返回类型:

QDomNode

警告

此部分包含从C++自动翻译到Python的片段,可能包含错误。

返回文档树中的前一个兄弟节点。修改返回的节点也会修改文档树中的节点。

例如,如果您有如下XML:

<h1>Heading</h1>
<p>The text...</p>
<h2>Next heading</h2>

这个 QDomNode 代表了 &lt;p&gt; 标签,previousSibling() 将返回代表 &lt;h1&gt; 标签的节点。

另请参阅

nextSibling()

previousSiblingElement([tagName=""[, namespaceURI=""]])#
参数:
  • tagName – str

  • namespaceURI – str

返回类型:

QDomElement

返回具有标签名 tagName 和命名空间URI namespaceURI 的前一兄弟元素。如果 tagName 为空,则返回具有 namespaceURI 的前一兄弟元素,如果 namespaceURI 为空,则返回具有 tagName 的前一兄弟元素。如果两个参数都为空,则返回前一兄弟元素。如果不存在这样的兄弟元素,则返回一个空元素。

removeChild(oldChild)#
参数:

oldChildQDomNode

返回类型:

QDomNode

从子元素列表中移除 oldChildoldChild 必须是此节点的直接子节点。

如果成功,则返回对 oldChild 的新引用;如果失败,则返回一个 null node

replaceChild(newChild, oldChild)#
参数:
返回类型:

QDomNode

newChild 替换 oldChildoldChild 必须是此节点的直接子节点。

如果 newChild 是另一个节点的子节点,则它将作为本节点的子节点重新父化。如果 newChild 是此节点的子节点,则其在子节点列表中的位置将改变。

如果 newChild 是一个 QDomDocumentFragment,则使用片段的所有子元素替换 oldChild

如果成功,则返回对 oldChild 的新引用;如果失败,则返回一个 null node

save(arg__1, arg__2[, arg__3=QDomNode.EncodingFromDocument])#
参数:

将节点及其所有子节点的XML表示写入流 stream 中。此函数使用 indent 作为缩进节点所使用的空格量。

如果文档包含无效的XML字符或不能在给定的编码中编码的字符,则结果和行为是未定义的。

如果 encodingPolicyEncodingFromDocument 并且此节点是文档节点,则将文本流 stream 的编码设置为通过处理名为“xml”的处理指令作为XML声明,如果存在的话,否则默认为UTF-8。XML声明不是处理指令,但是这种行为存在是出于历史原因。如果此节点不是文档节点,则使用文本流的编码。

如果 encodingPolicyEncodingFromTextStream 并且此节点是文档节点,则此函数的行为与 save(QTextStream &str, int indent) 相同,除了使用文本流 stream 中指定的编码。

如果文档包含无效的XML字符或不能在给定的编码中编码的字符,则结果和行为是未定义的。

setNodeValue(arg__1)#
参数:

arg__1 – str

将节点的值设置为 v

另请参阅

nodeValue()

setPrefix(pre)#
参数:

pre – str

如果节点具有命名空间前缀,此函数将节点的命名空间前缀更改为 pre。否则此函数不执行任何操作。

只有类型为 ElementNodeAttributeNode 的节点可以有命名空间。命名空间前缀必须在创建时指定;之后无法添加命名空间前缀。

toAttr()#
返回类型:

QDomAttr

将一个QDomNode对象转换为QDomAttr对象。如果节点不是一个属性,返回的对象将是null

另请参阅

isAttr()

toCDATASection()#
返回类型:

QDomCDATASection

将一个QDomNode对象转换为QDomCDATASection对象。如果节点不是一个CDATA区域,返回的对象将是null

另请参阅

isCDATASection()

toCharacterData()#
返回类型:

QDomCharacterData

将一个QDomNode对象转换为QDomCharacterData对象。如果节点不是字符数据节点,返回的对象将是null

另请参阅

isCharacterData()

toComment()#
返回类型:

QDomComment

将一个QDomNode对象转换为QDomComment对象。如果节点不是注释,返回的对象将是null

另请参阅

isComment()

toDocument()#
返回类型:

QDomDocument

将一个 QDomNode 转换为 QDomDocument . 如果节点不是文档,则返回的对象将是 null .

另请参阅

isDocument()

toDocumentFragment()#
返回类型:

QDomDocumentFragment

将一个 QDomNode 转换为 QDomDocumentFragment . 如果节点不是文档片段,则返回的对象将是 null .

另请参阅

isDocumentFragment()

toDocumentType()#
返回类型:

QDomDocumentType

将一个 QDomNode 转换为 QDomDocumentType . 如果节点不是文档类型,则返回的对象将是 null .

另请参阅

isDocumentType()

toElement()#
返回类型:

QDomElement

将一个 QDomNode 转换为 QDomElement . 如果节点不是元素,则返回的对象将是 null .

另请参阅

isElement()

toEntity()#
返回类型:

QDomEntity

将一个 QDomNode 转换为 QDomEntity . 如果节点不是实体,则返回的对象将是 null .

另请参阅

isEntity()

toEntityReference()#
返回类型:

QDomEntityReference

将一个 QDomNode 转换为一个 QDomEntityReference . 如果该节点不是实体引用,则返回的对象将是 null .

另请参阅

isEntityReference()

toNotation()#
返回类型:

QDomNotation

将一个 QDomNode 转换为一个 QDomNotation . 如果该节点不是标注,则返回的对象将是 null .

另请参阅

isNotation()

toProcessingInstruction()#
返回类型:

QDomProcessingInstruction

将一个 QDomNode 转换为一个 QDomProcessingInstruction . 如果该节点不是处理指令,则返回的对象将是 null .

toText()#
返回类型:

QDomText

将一个 QDomNode 转换为一个 QDomText . 如果该节点不是文本,则返回的对象将是 null .

另请参阅

isText()