PySide6.QtXml.QDomNode¶
- class QDomNode¶
-
继承者:
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()def
hasChildNodes()def
insertAfter()def
insertBefore()def
isAttr()def
isCDATASection()def
isComment()def
isDocument()def
isDocumentType()def
isElement()def
isEntity()def
isNotation()def
isNull()def
isSupported()def
isText()def
lastChild()def
lineNumber()def
localName()def
namedItem()def
namespaceURI()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()def
toElement()def
toEntity()def
toNotation()def
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可以为空,就像None一样。创建一个空节点的副本会生成另一个空节点。无法修改空节点,但可以为其分配另一个可能非空的节点。在这种情况下,空节点的副本将保持为空。您可以通过调用isNull()来检查QDomNode是否为空。QDomNode(或其任何派生类)的空构造函数会创建一个空节点。节点通过
insertBefore()、insertAfter()或appendChild()插入。你可以使用replaceChild()替换一个节点,并使用removeChild()删除一个节点。要遍历节点,使用
firstChild()获取节点的第一个子节点(如果有的话),并使用nextSibling()进行遍历。QDomNode还提供了lastChild()、previousSibling()和parentNode()。要查找具有特定节点名称的第一个子节点,请使用namedItem()。要查找一个节点是否有子节点,请使用
hasChildNodes(),要获取一个节点的所有子节点列表,请使用childNodes()。节点的名称和值(其含义根据类型而异)分别由
nodeName()和nodeValue()返回。节点的类型由nodeType()返回。节点的值可以通过setNodeValue()设置。节点所属的文档由
ownerDocument()返回。相邻的
QDomText节点可以通过normalize()合并为单个节点。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()
有关文档对象模型的更多信息,请参阅Level 1和Level 2 Core。有关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¶
此枚举指定了
save()在序列化时如何确定使用哪种编码。常量
描述
QDomNode.EncodingFromDocument
编码是从文档中获取的。
QDomNode.EncodingFromTextStream
编码是从QTextStream中获取的。
另请参阅
- __init__()¶
构造一个
null节点。- __init__(node)
- Parameters:
节点 –
QDomNode
构造
node的副本。复制的数据是共享的(浅拷贝):修改一个节点也会改变另一个。如果你想进行深拷贝,请使用
cloneNode()。将
newChild作为节点的最后一个子节点追加。如果
newChild是另一个节点的子节点,它将被重新分配到该节点。如果newChild是该节点的子节点,则其在子节点列表中的位置将被更改。如果
newChild是一个QDomDocumentFragment,那么片段中的子节点将从片段中移除并附加。如果
newChild是一个QDomElement并且此节点是一个QDomDocument,且已经有一个元素节点作为子节点,则newChild不会被添加为子节点,并且会返回一个空节点。成功时返回对
newChild的新引用,失败时返回null node。在空节点上调用此函数(例如,使用默认构造函数创建的)不会执行任何操作,并返回一个
null node。DOM规范不允许插入属性节点,但由于历史原因,QDom仍然接受它们。
- attributes()¶
- Return type:
返回所有属性的命名节点映射。属性仅适用于
QDomElement。更改地图中的属性也会更改此
QDomNode的属性。- childNodes()¶
- Return type:
警告
本节包含从C++自动翻译到Python的代码片段,可能包含错误。
返回所有直接子节点的列表。
大多数情况下,您将在
QDomElement对象上调用此函数。例如,如果XML文档看起来像这样:
<body> <h1>Heading</h1> <p>Hello <b>you</b></p> </body>
然后,“body”元素的子节点列表将包含由
标签创建的节点和由
标签创建的节点。
列表中的节点不会被复制;因此,更改列表中的节点也会更改此节点的子节点。
另请参阅
- clear()¶
将节点转换为空节点;如果之前不是空节点,则删除其类型和内容。
另请参阅
创建
QDomNode的深拷贝(非浅拷贝)。如果
deep为 true,则克隆是递归进行的,这意味着所有节点的子节点也会被深拷贝。如果deep为 false,则只复制节点本身,副本将没有子节点。- columnNumber()¶
- Return type:
整数
对于由
setContent()创建的节点,此函数返回节点在XML文档中被解析时的列号。否则,返回-1。另请参阅
返回节点的第一个子节点。如果没有子节点,则返回一个
null node。更改返回的节点也会更改文档树中的节点。另请参阅
- firstChildElement([tagName=""[, namespaceURI=""]])¶
- Parameters:
tagName – str
namespaceURI – str
- Return type:
返回具有标签名称
tagName和命名空间URInamespaceURI的第一个子元素。如果tagName为空,则返回具有namespaceURI的第一个子元素;如果namespaceURI为空,则返回具有tagName的第一个子元素。如果两个参数都为空,则返回第一个子元素。如果不存在这样的子元素,则返回一个空元素。- hasAttributes()¶
- Return type:
布尔
如果节点有属性,则返回
true;否则返回false。另请参阅
- hasChildNodes()¶
- Return type:
布尔
如果节点有一个或多个子节点,则返回
true;否则返回false。- insertAfter(newChild, refChild)¶
在子节点
refChild之后插入节点newChild。refChild必须是此节点的直接子节点。如果refChild是null,则newChild将作为此节点的最后一个子节点追加。如果
newChild是另一个节点的子节点,它将被重新分配到该节点。如果newChild是该节点的子节点,则其在子节点列表中的位置将被更改。如果
newChild是一个QDomDocumentFragment,那么片段中的子节点将从片段中移除并插入到refChild之后。成功时返回对
newChild的新引用,失败时返回null node。DOM规范不允许插入属性节点,但由于历史原因,QDom仍然接受它们。
- insertBefore(newChild, refChild)¶
在子节点
refChild之前插入节点newChild。refChild必须是此节点的直接子节点。如果refChild是null,则newChild将作为节点的第一个子节点插入。如果
newChild是另一个节点的子节点,它将被重新分配到该节点。如果newChild是该节点的子节点,则其在子节点列表中的位置将被更改。如果
newChild是一个QDomDocumentFragment,那么片段中的子节点将从片段中移除并插入到refChild之前。成功时返回对
newChild的新引用,失败时返回null node。DOM规范不允许插入属性节点,但由于历史原因,QDom仍然接受它们。
- isAttr()¶
- Return type:
布尔
如果节点是属性,则返回
true;否则返回false。如果此函数返回
true,并不意味着此对象是 QDomAttribute;你可以使用 toAttribute() 获取 QDomAttribute。另请参阅
- isCDATASection()¶
- Return type:
布尔
如果节点是CDATA部分,则返回
true;否则返回false。如果此函数返回
true,并不意味着此对象是QDomCDATASection;你可以通过toCDATASection()获取QDomCDATASection。另请参阅
- isCharacterData()¶
- Return type:
布尔
如果节点是字符数据节点,则返回
true;否则返回false。如果此函数返回
true,并不意味着此对象是QDomCharacterData;你可以通过toCharacterData()获取QDomCharacterData。另请参阅
- isComment()¶
- Return type:
布尔
如果节点是注释,则返回
true;否则返回false。如果此函数返回
true,并不意味着此对象是QDomComment;你可以通过toComment()获取QDomComment。另请参阅
- isDocument()¶
- Return type:
布尔
如果节点是文档,则返回
true;否则返回false。如果此函数返回
true,并不意味着此对象是QDomDocument;你可以通过toDocument()获取QDomDocument。另请参阅
- isDocumentFragment()¶
- Return type:
布尔
如果节点是文档片段,则返回
true;否则返回false。如果此函数返回
true,并不意味着此对象是QDomDocumentFragment;你可以通过toDocumentFragment()获取QDomDocumentFragment。另请参阅
- isDocumentType()¶
- Return type:
布尔
如果节点是文档类型,则返回
true;否则返回false。如果此函数返回
true,并不意味着此对象是QDomDocumentType;你可以通过toDocumentType()获取QDomDocumentType。另请参阅
- isElement()¶
- Return type:
布尔
如果节点是一个元素,则返回
true;否则返回false。如果此函数返回
true,并不意味着此对象是QDomElement;你可以使用toElement()获取QDomElement。另请参阅
- isEntity()¶
- Return type:
布尔
如果节点是一个实体,则返回
true;否则返回false。如果此函数返回
true,并不意味着此对象是QDomEntity;你可以通过toEntity()获取QDomEntity。另请参阅
- isEntityReference()¶
- Return type:
布尔
如果节点是实体引用,则返回
true;否则返回false。如果此函数返回
true,并不意味着此对象是QDomEntityReference;你可以通过toEntityReference()获取QDomEntityReference。另请参阅
- isNotation()¶
- Return type:
布尔
如果节点是一个符号,则返回
true;否则返回false。如果此函数返回
true,并不意味着此对象是QDomNotation;你可以通过toNotation()获取QDomNotation。另请参阅
- isNull()¶
- Return type:
布尔
如果此节点为空(即没有类型或内容),则返回
true;否则返回false。- isProcessingInstruction()¶
- Return type:
布尔
如果节点是处理指令,则返回
true;否则返回false。如果此函数返回
true,并不意味着此对象是QDomProcessingInstruction;你可以使用toProcessingInstruction()获取 QProcessingInstruction。- isSupported(feature, version)¶
- Parameters:
feature – str
version – str
- Return type:
布尔
如果DOM实现实现了特性
feature并且该节点在版本version中支持此特性,则返回true;否则返回false。另请参阅
- isText()¶
- Return type:
布尔
如果节点是文本节点,则返回
true;否则返回false。如果此函数返回
true,并不意味着此对象是QDomText;你可以通过toText()获取QDomText。另请参阅
返回节点的最后一个子节点。如果没有子节点,则返回一个
null node。更改返回的节点也会更改文档树中的节点。另请参阅
- lastChildElement([tagName=""[, namespaceURI=""]])¶
- Parameters:
tagName – str
namespaceURI – str
- Return type:
返回具有标签名称
tagName和命名空间URInamespaceURI的最后一个子元素。如果tagName为空,则返回具有namespaceURI的最后一个子元素;如果namespaceURI为空,则返回具有tagName的最后一个子元素。如果两个参数都为空,则返回最后一个子元素。如果不存在这样的子元素,则返回一个空元素。- lineNumber()¶
- Return type:
整数
对于由
setContent()创建的节点,此函数返回节点在XML文档中被解析的行号。否则,返回-1。- localName()¶
- Return type:
字符串
如果节点使用命名空间,此函数返回节点的本地名称;否则返回一个空字符串。
只有类型为
ElementNode或AttributeNode的节点才能拥有命名空间。命名空间必须在创建时指定;之后无法添加命名空间。返回第一个直接子节点,其中
nodeName()等于name。如果不存在这样的直接子节点,则返回一个
null node。另请参阅
- namespaceURI()¶
- Return type:
字符串
返回此节点的命名空间URI,如果节点没有命名空间URI,则返回空字符串。
只有类型为
ElementNode或AttributeNode的节点才能拥有命名空间。命名空间URI必须在创建时指定,之后不能更改。警告
本节包含从C++自动翻译到Python的代码片段,可能包含错误。
返回文档树中的下一个兄弟节点。更改返回的节点也会更改文档树中的节点。
如果你有这样的XML:
<h1>Heading</h1> <p>The text...</p> <h2>Next heading</h2>
而这个
QDomNode表示标签,nextSibling() 将返回表示
标签的节点。
另请参阅
- nextSiblingElement([taName=""[, namespaceURI=""]])¶
- Parameters:
taName – str
namespaceURI – str
- Return type:
返回具有标签名称
tagName和命名空间URInamespaceURI的下一个兄弟元素。如果tagName为空,则返回具有namespaceURI的下一个兄弟元素;如果namespaceURI为空,则返回具有tagName的下一个兄弟子元素。如果两个参数都为空,则返回下一个兄弟元素。如果不存在这样的兄弟元素,则返回一个空元素。- nodeName()¶
- Return type:
字符串
返回节点的名称。
名称的含义取决于子类:
名称
含义
属性的名称
字符串“#cdata-section”
字符串“#comment”
字符串“#document”
字符串“#document-fragment”
文档类型的名称
标签名称
实体的名称
被引用实体的名称
符号的名称
处理指令的目标
字符串“#text”
注意
此函数在处理元素和属性节点的名称时,不考虑命名空间的存在。因此,返回的名称可能包含任何可能存在的命名空间前缀。要获取元素或属性的节点名称,请使用
localName();要获取命名空间前缀,请使用namespaceURI()。另请参阅
返回节点的类型。
- nodeValue()¶
- Return type:
字符串
返回节点的值。
值的含义取决于子类:
名称
含义
属性值
CDATA 部分的内容
注释
处理指令的数据
文本
所有其他子类没有节点值,将返回一个空字符串。
另请参阅
- normalize()¶
在元素上调用normalize()会将其所有子元素转换为标准形式。这意味着相邻的
QDomText对象将合并为单个文本对象(QDomCDATASection节点不会被合并)。如果
other和这个 DOM 节点不相等,则返回true;否则返回false。警告
本节包含从C++自动翻译到Python的代码片段,可能包含错误。
如果
other和这个 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()¶
- Return type:
返回此节点所属的文档。
返回父节点。如果此节点没有父节点,则返回一个空节点(即一个节点,对于该节点,
isNull()返回true)。- prefix()¶
- Return type:
字符串
返回节点的命名空间前缀,如果节点没有命名空间前缀,则返回空字符串。
只有类型为
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=""]])¶
- Parameters:
tagName – str
namespaceURI – str
- Return type:
返回具有标签名称
tagName和命名空间URInamespaceURI的前一个兄弟元素。如果tagName为空,则返回具有namespaceURI的前一个兄弟元素;如果namespaceURI为空,则返回具有tagName的前一个兄弟元素。如果两个参数都为空,则返回前一个兄弟元素。如果不存在这样的兄弟元素,则返回一个空元素。从子节点列表中移除
oldChild。oldChild必须是该节点的直接子节点。成功时返回对
oldChild的新引用,失败时返回null node。- replaceChild(newChild, oldChild)¶
用
newChild替换oldChild。oldChild必须是此节点的直接子节点。如果
newChild是另一个节点的子节点,它将被重新分配到该节点。如果newChild是该节点的子节点,则其在子节点列表中的位置将被更改。如果
newChild是一个QDomDocumentFragment,那么oldChild将被片段的所有子节点替换。成功时返回对
oldChild的新引用,失败时返回null node。- save(stream, indent[, encodingPolicy=QDomNode.EncodingFromDocument])¶
- Parameters:
stream –
QTextStreamindent – int
encodingPolicy –
EncodingPolicy
将节点及其所有子节点的XML表示写入流
stream。此函数使用indent作为节点的缩进量。如果文档包含无效的XML字符或无法在给定编码中编码的字符,结果和行为是未定义的。
如果
encodingPolicy是EncodingFromDocument并且此节点是文档节点,则通过将名为“xml”的处理指令视为XML声明来设置文本流stream的编码,如果存在这样的处理指令,否则默认为UTF-8。XML声明不是处理指令,但此行为由于历史原因而存在。如果此节点不是文档节点,则使用文本流的编码。如果
encodingPolicy是EncodingFromTextStream并且此节点是文档节点,则此函数的行为类似于 save(QTextStream &str, int indent),不同之处在于使用了文本流stream中指定的编码。如果文档包含无效的XML字符或无法在给定编码中编码的字符,结果和行为是未定义的。
- setNodeValue(value)¶
- Parameters:
值 – str
将节点的值设置为
value。另请参阅
- setPrefix(pre)¶
- Parameters:
pre – str
如果节点有命名空间前缀,此函数将节点的命名空间前缀更改为
pre。否则,此函数不执行任何操作。只有类型为
ElementNode或AttributeNode的节点才能拥有命名空间。命名空间前缀必须在创建时指定;之后无法添加命名空间前缀。将
QDomNode转换为QDomAttr。如果节点不是属性,则返回的对象将为null。另请参阅
- toCDATASection()¶
- Return type:
将
QDomNode转换为QDomCDATASection。如果节点不是CDATA部分,返回的对象将是null。另请参阅
- toCharacterData()¶
- Return type:
将
QDomNode转换为QDomCharacterData。如果节点不是字符数据节点,则返回的对象将为null。另请参阅
- toComment()¶
- Return type:
将
QDomNode转换为QDomComment。如果节点不是注释,返回的对象将是null。另请参阅
- toDocument()¶
- Return type:
将
QDomNode转换为QDomDocument。如果节点不是文档,则返回的对象将为null。另请参阅
- toDocumentFragment()¶
- Return type:
将
QDomNode转换为QDomDocumentFragment。如果节点不是文档片段,返回的对象将是null。另请参阅
- toDocumentType()¶
- Return type:
将
QDomNode转换为QDomDocumentType。如果节点不是文档类型,则返回的对象将为null。另请参阅
- toElement()¶
- Return type:
将
QDomNode转换为QDomElement。如果节点不是元素,则返回的对象将为null。另请参阅
- toEntity()¶
- Return type:
将
QDomNode转换为QDomEntity。如果节点不是实体,则返回的对象将是null。另请参阅
- toEntityReference()¶
- Return type:
将
QDomNode转换为QDomEntityReference。如果节点不是实体引用,返回的对象将是null。另请参阅
- toNotation()¶
- Return type:
将
QDomNode转换为QDomNotation。如果节点不是一个符号,返回的对象将是null。另请参阅
- toProcessingInstruction()¶
- Return type:
将
QDomNode转换为QDomProcessingInstruction。如果节点不是处理指令,则返回的对象将是null。将
QDomNode转换为QDomText。如果节点不是文本,返回的对象将是null。另请参阅