为什么MSXML中的createProcessingInstruction会生成不完整的输出?

时间:2009-02-12 13:18:26

标签: xml ms-access access-vba msxml

以下VBA代码生成<?xml version="1.0"?>作为输出。

Dim XML As New DomDocument 
Dim pi As IXMLDOMProcessingInstruction

'.... some code that sets the root element of the document

Set pi = XML.createProcessingInstruction("xml", "version='1.0' encoding='UTF-8'")
        XML.insertBefore pi, XML.documentElement

为什么遗漏了encoding="UTF-8"

2 个答案:

答案 0 :(得分:9)

&LT;?xml的&GT;是不是处理指令。 &lt;?xml?&gt; construct被称为XML declaration,并遵循与实际处理指令不同的规则。创建名为“xml”的PI格式不正确;以“xml”开头的名称为reserved

要更改所需的prolog格式configure an XMLWriter,设置'version','encoding'或简单地'omitXMLDeclaration'将其完全删除,这是完全正常的,因为1.0和UTF-8是默认值值。

答案 1 :(得分:1)

无论如何,UTF-8是默认编码。您指定的内容是多余的,因此序列化程序可能会省略它。但是,version字段不是可选字段。如果文件完全具有XML声明,the declaration must include the version field