PySide6.QtCore.QXmlStreamWriter¶
- class QXmlStreamWriter¶
QXmlStreamWriter
类提供了一个带有简单流式 API 的 XML 写入器。更多…概要¶
方法¶
def
__init__()
def
autoFormatting()
def
device()
def
hasError()
def
setDevice()
def
writeAttribute()
def
writeCDATA()
def
writeComment()
def
writeDTD()
def
writeNamespace()
注意
本文档可能包含从C++自动翻译到Python的代码片段。我们始终欢迎对代码片段翻译的贡献。如果您发现翻译问题,您也可以通过在我们的https:/bugreports.qt.io/projects/PYSIDE上创建工单来告知我们。
详细描述¶
警告
本节包含从C++自动翻译到Python的代码片段,可能包含错误。
QXmlStreamWriter
是用于写入 XML 的QXmlStreamReader
的对应类。与其相关类一样,它在通过setDevice()
指定的QIODevice
上操作。API 简单直接:对于您想要写入的每个 XML 标记或事件,写入器都提供了一个专门的函数。你使用
writeStartDocument()
开始一个文档,并使用writeEndDocument()
结束它。这将隐式关闭所有剩余的未关闭标签。元素标签通过
writeStartElement()
打开,接着是writeAttribute()
或writeAttributes()
,元素内容,然后是writeEndElement()
。可以使用更短的形式writeEmptyElement()
来写入空元素,接着是writeAttributes()
。元素内容由字符、实体引用或嵌套元素组成。它使用
writeCharacters()
编写,该方法还负责转义所有禁止的字符和字符序列,writeEntityReference()
,或后续调用writeStartElement()
。可以使用便捷方法writeTextElement()
来编写仅包含文本的终端元素。以下简化的代码片段展示了使用该类编写带有缩进的格式化XML的基本用法:
stream = QXmlStreamWriter(output) stream.setAutoFormatting(True) stream.writeStartDocument() ... stream.writeStartElement("bookmark") stream.writeAttribute("href", "http://qt-project.org/") stream.writeTextElement("title", "Qt Project") stream.writeEndElement() # bookmark ... stream.writeEndDocument()
QXmlStreamWriter
负责处理命名空间的前缀,你只需要在写入元素或属性时指定namespaceUri
。如果你必须符合某些前缀,你可以通过使用writeNamespace()
或writeDefaultNamespace()
手动声明命名空间来强制写入器使用它们。或者,你可以绕过流写入器的命名空间支持,使用接受限定名称的重载方法。命名空间 http://www.w3.org/XML/1998/namespace 是隐式的,并映射到前缀 xml。流写入器可以通过在元素之间的空部分添加换行和缩进来自动格式化生成的XML数据,使XML数据对人类更易读,并且对大多数源代码管理系统更易于处理。该功能可以通过
autoFormatting
属性开启,并通过autoFormattingIndent
属性进行自定义。其他函数包括
writeCDATA()
、writeComment()
、writeProcessingInstruction()
和writeDTD()
。XML流的链式操作通过writeCurrentToken()
支持。QXmlStreamWriter
总是以 UTF-8 编码 XML。如果在写入底层设备时发生错误,
hasError()
开始返回 true,并且后续的写入操作将被忽略。QXmlStream 书签示例 展示了如何使用流写入器来编写一个之前由
QXmlStreamReader
读取的 XML 书签文件 (XBEL)。- __init__()¶
构建一个流写入器。
另请参阅
- __init__(array)
- Parameters:
数组 –
QByteArray
构造一个写入
array
的流写入器。这与创建一个操作在QBuffer
设备上的xml写入器相同,该设备又操作在array
上。- __init__(device)
- Parameters:
设备 –
QIODevice
构造一个流写入器,该写入器写入
device
;- autoFormatting()¶
- Return type:
布尔
如果启用了自动格式化,则返回
true
,否则返回false
。另请参阅
- autoFormattingIndent()¶
- Return type:
整数
返回与
QXmlStreamWriter
关联的当前设备,如果未分配设备,则返回None
。另请参阅
- hasError()¶
- Return type:
布尔
如果写入失败,返回
true
。如果流未能写入底层设备或要写入的数据包含无效字符,则可能会发生这种情况。
错误状态永远不会重置。在错误发生后进行的写入操作可能会被忽略,即使错误条件已被清除。
- setAutoFormatting(enable)¶
- Parameters:
enable – 布尔值
如果
enable
为true
,则启用自动格式化,否则禁用。默认值为
false
。另请参阅
- setAutoFormattingIndent(spacesOrTabs)¶
- Parameters:
spacesOrTabs – int
将当前设备设置为
device
。如果你希望流写入QByteArray
,你可以创建一个QBuffer
设备。另请参阅
- writeAttribute(attribute)¶
- Parameters:
属性 –
QXmlStreamAttribute
这是一个重载函数。
写入
attribute
。此函数只能在写入任何内容之前调用
writeStartElement()
,或者在调用writeEmptyElement()
之后调用。- writeAttribute(qualifiedName, value)
- Parameters:
qualifiedName – str
value – str
这是一个重载函数。
写入一个具有
qualifiedName
和value
的属性。此函数只能在写入任何内容之前调用
writeStartElement()
,或者在调用writeEmptyElement()
之后调用。注意
在Qt 6.5之前的版本中,此函数使用的是
QString
,而不是QAnyStringView
。- writeAttribute(namespaceUri, name, value)
- Parameters:
namespaceUri – str
name – str
value – str
写入一个带有
name
和value
的属性,并为指定的namespaceUri
添加前缀。如果命名空间尚未声明,QXmlStreamWriter
将为其生成一个命名空间声明。此函数只能在写入任何内容之前调用
writeStartElement()
,或者在调用writeEmptyElement()
之后调用。注意
在Qt 6.5之前的版本中,此函数使用的是
QString
,而不是QAnyStringView
。- writeAttributes(attributes)¶
- Parameters:
属性 –
QXmlStreamAttributes
写入属性向量
attributes
。如果属性中引用的命名空间尚未声明,QXmlStreamWriter
将为其生成一个命名空间声明。此函数只能在写入任何内容之前调用
writeStartElement()
,或者在调用writeEmptyElement()
之后调用。- writeCDATA(text)¶
- Parameters:
文本 – str
将
text
写入为CDATA部分。如果text
包含禁止的字符序列“]]>”,它将被分割成不同的CDATA部分。此函数主要为了完整性而存在。通常你不需要使用它,因为
writeCharacters()
会自动转义所有非内容字符。注意
在Qt 6.5之前的版本中,此函数使用的是
QString
,而不是QAnyStringView
。- writeCharacters(text)¶
- Parameters:
文本 – str
写入
text
。字符“<”、“&”和“””被转义为实体引用“<”、“&”和“"”。为了避免禁止的序列“]]>”,“>”也被转义为“>”。- writeComment(text)¶
- Parameters:
文本 – str
将
text
作为XML注释写入,其中text
不能包含禁止的序列--
或以-
结尾。请注意,XML没有提供任何方法来转义注释中的-
。注意
在Qt 6.5之前的版本中,此函数使用的是
QString
,而不是QAnyStringView
。- writeCurrentToken(reader)¶
- Parameters:
reader –
QXmlStreamReader
写入
reader
的当前状态。支持所有可能的有效状态。此函数的目的是支持XML数据的链式处理。
另请参阅
- writeDTD(dtd)¶
- Parameters:
dtd – str
写入一个DTD部分。
dtd
表示来自XML 1.0规范的整个doctypedecl生成。注意
在Qt 6.5之前的版本中,此函数使用的是
QString
,而不是QAnyStringView
。- writeDefaultNamespace(namespaceUri)¶
- Parameters:
namespaceUri – str
为
namespaceUri
写入默认的命名空间声明。如果调用了
writeStartElement()
或writeEmptyElement()
,声明将应用于当前元素;否则,它将应用于下一个子元素。请注意,命名空间 http://www.w3.org/XML/1998/namespace(绑定到 xmlns)和 http://www.w3.org/2000/xmlns/(绑定到 xml)根据定义不能声明为默认值。
注意
在Qt 6.5之前的版本中,此函数使用的是
QString
,而不是QAnyStringView
。- writeEmptyElement(qualifiedName)¶
- Parameters:
qualifiedName – str
这是一个重载函数。
写入一个具有限定名称
qualifiedName
的空元素。后续对writeAttribute()
的调用将为此元素添加属性。注意
在Qt 6.5之前的版本中,此函数使用的是
QString
,而不是QAnyStringView
。- writeEmptyElement(namespaceUri, name)
- Parameters:
namespaceUri – str
name – str
使用
name
写入一个空元素,并为指定的namespaceUri
添加前缀。如果命名空间尚未声明,QXmlStreamWriter
将为其生成一个命名空间声明。后续调用writeAttribute()
将为此元素添加属性。- writeEndDocument()¶
关闭所有剩余的开放开始元素并写入一个新行。
另请参阅
- writeEndElement()¶
关闭前一个开始元素。
另请参阅
- writeEntityReference(name)¶
- Parameters:
name – str
将实体引用
name
写入流中,格式为“&``name``;”。注意
在Qt 6.5之前的版本中,此函数使用的是
QString
,而不是QAnyStringView
。- writeNamespace(namespaceUri[, prefix={}])¶
- Parameters:
namespaceUri – str
prefix – str
为
namespaceUri
写入一个命名空间声明,使用prefix
。如果prefix
为空,QXmlStreamWriter
会分配一个唯一的prefix,由字母'n'后跟一个数字组成。如果调用了
writeStartElement()
或writeEmptyElement()
,声明将应用于当前元素;否则,它将应用于下一个子元素。请注意,前缀 xml 是预定义的,并且保留给 http://www.w3.org/XML/1998/namespace,而该命名空间不能被绑定到任何其他前缀。前缀 xmlns 及其 URI http://www.w3.org/2000/xmlns/ 用于命名空间机制本身,因此在声明中完全禁止使用。
注意
在Qt 6.5之前的版本中,此函数使用的是
QString
,而不是QAnyStringView
。- writeProcessingInstruction(target[, data={}])¶
- Parameters:
target – str
data – 字符串
使用
target
和data
写入一个XML处理指令,其中data
不能包含序列“?>”。注意
在Qt 6.5之前的版本中,此函数使用的是
QString
,而不是QAnyStringView
。- writeStartDocument()¶
这是一个重载函数。
写入一个以XML版本号“1.0”开头的文档。
另请参阅
- writeStartDocument(version)
- Parameters:
版本 – str
写入一个以XML版本号
version
开头的文档。- writeStartDocument(version, standalone)
- Parameters:
version – str
standalone – 布尔值
写入一个以XML版本号
version
和一个独立属性standalone
开头的文档。- writeStartElement(qualifiedName)¶
- Parameters:
qualifiedName – str
这是一个重载函数。
使用
qualifiedName
写入一个开始元素。后续对writeAttribute()
的调用将为此元素添加属性。- writeStartElement(namespaceUri, name)
- Parameters:
namespaceUri – str
name – str
使用
name
写入一个开始元素,并为指定的namespaceUri
添加前缀。如果尚未声明命名空间,QXmlStreamWriter
将为其生成一个命名空间声明。后续调用writeAttribute()
将向此元素添加属性。注意
在Qt 6.5之前的版本中,此函数使用的是
QString
,而不是QAnyStringView
。- writeTextElement(qualifiedName, text)¶
- Parameters:
qualifiedName – str
文本 – str
警告
本节包含从C++自动翻译到Python的代码片段,可能包含错误。
这是一个重载函数。
使用
qualifiedName
和text
写入一个文本元素。这是一个方便的函数,等同于:
writeStartElement(qualifiedName) writeCharacters(text) writeEndElement()
注意
在Qt 6.5之前的版本中,此函数使用的是
QString
,而不是QAnyStringView
。- writeTextElement(namespaceUri, name, text)
- Parameters:
namespaceUri – str
name – str
文本 – str
警告
本节包含从C++自动翻译到Python的代码片段,可能包含错误。
写入一个带有
name
的文本元素,前缀为指定的namespaceUri
,以及text
。如果命名空间尚未声明,QXmlStreamWriter
将为其生成一个命名空间声明。这是一个方便的函数,等同于:
writeStartElement(namespaceUri, name) writeCharacters(text) writeEndElement()
注意
在Qt 6.5之前的版本中,此函数使用的是
QString
,而不是QAnyStringView
。