- class QXmlStreamWriter#
QXmlStreamWriter
类提供了一个具有简单流式API的XML编写器。更多...概述#
方法#
def
__init__()
def
autoFormatting()
def
device()
def
hasError()
def
setDevice()
def
writeAttribute()
注释
请注意,此文档可能包含自动从 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__(array)#
- 参数:
array –
QByteArray
构建一个写入到数组的流写入器。这与创建一个在
QBuffer
设备上操作的自定义 XML 写入器的操作相同,该设备最终在array
上操作。- __init__()
构建一个流写入器。
参见
- __init__(device)
- 参数:
device –
QIODevice
构建一个写入到
device
的流写入器;- autoFormatting()#
- 返回类型::
bool
返回 true 如果启用自动格式化,否则返回 false。
- autoFormattingIndent()#
- 返回类型::
int
返回与
QXmlStreamWriter
关联的当前设备,如果尚未分配设备,则返回 None。参见
- hasError()#
- 返回类型::
bool
如果写入失败,则返回 true。
如果底层设备写入失败,或者要写入的数据包含无效字符,则可能会发生这种情况。
错误状态永远不会重置。发生错误后的写入可能被忽略,即使错误条件已清除。
- setAutoFormatting(arg__1)#
- 参数:
arg__1 – bool
如果 enable 为 true,则启用自动格式化,否则禁用。
默认值为 false。
- setAutoFormattingIndent(spacesOrTabs)#
- 参数:
spacesOrTabs – int
将当前设备设置为
device
。如果您想将流写入一个QByteArray
,可以创建一个QBuffer
设备。参见
- writeAttribute(namespaceUri, name, value)#
- 参数:
namespaceUri – str
name – str
value – str
写入名为
name
且有value
的属性,且具有指定的namespaceUri
的前缀。如果此命名空间尚未声明,QXmlStreamWriter
将为它生成命名空间声明。此函数只能在调用
writeStartElement()
并在写入任何内容之前,或者调用writeEmptyElement()
之后调用。注释
在6.5之前的Qt版本中,此函数接受
QString
而不是QAnyStringView
。- writeAttribute(qualifiedName, value)
- 参数:
qualifiedName – str
value – str
这是一个重载函数。
写入具有
qualifiedName
和value
的属性。此函数只能在调用
writeStartElement()
并在写入任何内容之前,或者调用writeEmptyElement()
之后调用。注释
在6.5之前的Qt版本中,此函数接受
QString
而不是QAnyStringView
。- writeAttribute(attribute)
- 参数:
attribute –
QXmlStreamAttribute
这是一个重载函数。
写入
attribute
。此函数只能在调用
writeStartElement()
并在写入任何内容之前,或者调用writeEmptyElement()
之后调用。- writeAttributes(attributes)#
- 参数:
attributes –
QXmlStreamAttributes
写入属性向量
attributes
。如果属性中引用的命名空间尚未声明,QXmlStreamWriter
将为其生成命名空间声明。此函数只能在调用
writeStartElement()
并在写入任何内容之前,或者调用writeEmptyElement()
之后调用。- writeCDATA(text)#
- 参数:
text – 字符串
将
text
写入 CDATA 部分。如果text
包含禁止的字符序列 "]]>",则将其分成不同的 CDATA 部分。此函数主要存在于完整性的考虑。通常您不需要使用它,因为
writeCharacters()
会自动转义所有非内容字符。注释
在6.5之前的Qt版本中,此函数接受
QString
而不是QAnyStringView
。- writeCharacters(text)#
- 参数:
text – 字符串
写入
text
。字符“<”,“&”,和“”被转义为实体引用“<”,“&”和“"”。为了防止禁止的序列“]]>”,“>”也被转义为“>”。- writeComment(text)#
- 参数:
text – 字符串
将
text
写入 XML 注释,其中text
必须不包含禁止的序列--
或以-
结尾。请注意,XML 在注释中不提供任何方法来转义-
。注释
在6.5之前的Qt版本中,此函数接受
QString
而不是QAnyStringView
。- writeCurrentToken(reader)#
- 参数:
reader –
QXmlStreamReader
写入
reader
的当前状态。所有可能的有效状态都受支持。此函数的目的是为了支持 XML 数据的链式处理。
参见
- writeDTD(dtd)#
- 参数:
dtd – 字符串
写入一个 DTD 部分。这里的
dtd
代表来自 XML 1.0 规范的整个 doctypedecl 生成。注释
在6.5之前的Qt版本中,此函数接受
QString
而不是QAnyStringView
。- writeDefaultNamespace(namespaceUri)#
- 参数:
namespaceUri – str
为
namespaceUri
写入默认命名空间声明。如果之前调用了
writeStartElement()
或writeEmptyElement()
,该声明应用于当前元素;否则它应用于下一个子元素。请注意,http://www.w3.org/XML/1998/namespace(绑定到 xmlns)和 http://www.w3.org/2000/xmlns/(绑定到 xml)这两个命名空间根据定义不能声明为默认。
注释
在6.5之前的Qt版本中,此函数接受
QString
而不是QAnyStringView
。- writeEmptyElement(namespaceUri, name)#
- 参数:
namespaceUri – str
name – str
写入具有
name
的空元素,前缀为指定的namespaceUri
。如果命名空间尚未声明,QXmlStreamWriter
将为其生成一个命名空间声明。随后的writeAttribute()
调用将为该元素添加属性。- writeEmptyElement(qualifiedName)
- 参数:
qualifiedName – str
这是一个重载函数。
写入具有限定名
qualifiedName
的空元素。随后的writeAttribute()
调用将为该元素添加属性。注释
在6.5之前的Qt版本中,此函数接受
QString
而不是QAnyStringView
。- writeEndDocument()#
关闭所有剩余的打开起始元素并写一个换行符。
- writeEndElement()#
关闭上一个起始元素。
- writeEntityReference(name)#
- 参数:
name – str
将实体引用
name
写入流中,如“&``name``;”。注释
在6.5之前的Qt版本中,此函数接受
QString
而不是QAnyStringView
。- writeNamespace(namespaceUri[, prefix={}])#
- 参数:
namespaceUri – str
prefix – str
使用
prefix
写入namespaceUri
的命名空间声明。如果prefix
为空,QXmlStreamWriter
将分配一个由字母 'n' 加上数字组成的唯一前缀。如果之前调用了
writeStartElement()
或writeEmptyElement()
,该声明应用于当前元素;否则它应用于下一个子元素。注意,前缀 xml 既是预定义的,也是保留给 http://www.w3.org/XML/1998/namespace 的,因此不能绑定到任何其他前缀。前缀 xmlns 和其 URI http://www.w3.org/2000/xmlns/ 用于命名空间机制本身,因此在声明中是绝对禁止的。
注释
在6.5之前的Qt版本中,此函数接受
QString
而不是QAnyStringView
。- writeProcessingInstruction(target[, data={}])#
- 参数:
target – str
data – str
写入带有
target
和data
的XML处理指令,其中data
不得包含序列“?=>”。注释
在6.5之前的Qt版本中,此函数接受
QString
而不是QAnyStringView
。- writeStartDocument()#
这是一个重载函数。
写入XML版本号为“1.0”的文档开始。
- writeStartDocument(version)
- 参数:
version - 字符串
写入带有XML版本号
version
的文档开始。- writeStartDocument(version, standalone)
- 参数:
version - 字符串
standalone - 布尔值
写入带有XML版本号
version
和独立属性standalone
的文档开始。- writeStartElement(namespaceUri, name)#
- 参数:
namespaceUri – str
name – str
写入带有
name
的起始元素,并加上指定的前缀namespaceUri
。如果尚未声明命名空间,QXmlStreamWriter
将为此生成命名空间声明。后续调用writeAttribute()
将为该元素添加属性。注释
在6.5之前的Qt版本中,此函数接受
QString
而不是QAnyStringView
。- writeStartElement(qualifiedName)
- 参数:
qualifiedName – str
这是一个重载函数。
写入带有
qualifiedName
的起始元素。后续调用writeAttribute()
将为该元素添加属性。- writeTextElement(namespaceUri, name, text)#
- 参数:
namespaceUri – str
name – str
text – 字符串
警告
本节包含自动从 C++ 转换为 Python 的代码片段,可能包含错误。
将具有
name
的文本元素写入,带有指定的namespaceUri
前缀和text
。如果未声明命名空间,则QXmlStreamWriter
将为其生成命名空间声明。这是一个方便函数,相当于
writeStartElement(namespaceUri, name) writeCharacters(text) writeEndElement()
注释
在6.5之前的Qt版本中,此函数接受
QString
而不是QAnyStringView
。- writeTextElement(qualifiedName, text)
- 参数:
qualifiedName – str
text – 字符串
警告
本节包含自动从 C++ 转换为 Python 的代码片段,可能包含错误。
这是一个重载函数。
以
qualifiedName
和text
写入文本元素。这是一个方便函数,相当于
writeStartElement(qualifiedName) writeCharacters(text) writeEndElement()
注释
在6.5之前的Qt版本中,此函数接受
QString
而不是QAnyStringView
。