2009-02-12 107 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是默認值。

相關問題