- 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 –
QTextStreamarg__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 .
另请参阅