2009-02-12 66 views
4

以下VBA代码生成<?xml version="1.0"?>作为输出。为什么MSXML中的createProcessingInstruction生成不完整的输出?

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"被遗漏了?

回答

0

无论如何,UTF-8是默认编码。你指定的是多余的,所以序列化器可能会省略它。但是,version字段不是可选字段。如果该文件完全具有XML声明,则为the declaration must include the version field

+0

版本也是默认值。仍然在输出中。 – norbertB 2009-02-12 13:32:29

+2

恩,谢谢你接受我的回答,但我倾向于认为Bobince是更好的人。显然,尽管看起来就像一个处理指令,<?xml不是一个,所以不要使用createProcessingInstruction。 – 2009-02-12 19:44:35

7

<?xml?>是不是a处理指令。 <?xml?>结构被称为XML declaration,并遵循不同的规则来处理实际的处理指令。创建名称为“xml”的PI并不完整;以'xml'开头的名字是reserved

要改变序言的格式,您需要configure an XMLWriter,设置'version','encoding'或者简单的'omitXMLDeclaration'将它完全删除,这是完全正确的,因为1.0和UTF-8是默认值。

相关问题