Почему createProcessingInstruction в MSXML генерирует неполный вывод? - PullRequest
5 голосов
/ 12 февраля 2009

Следующий код 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 ]

9 голосов
/ 12 февраля 2009

<? Xml?> - , а не Инструкция обработки. Конструкция <? Xml?> Называется декларацией XML и подчиняется другим правилам настоящей Инструкции обработки. Создание PI с именем «xml» не является правильным; имена, начинающиеся с «xml»: зарезервированы .

Чтобы изменить формат пролога, вам нужно настроить XMLWriter , установить «версию», «кодирование» или просто «omitXMLDeclaration», чтобы полностью удалить его, что прекрасно с версии 1.0 и UTF 8 являются значениями по умолчанию.

1 голос
/ 12 февраля 2009

UTF-8 в любом случае является кодировкой по умолчанию. То, что вы указали, является избыточным, так что сериализатор, скорее всего, его пропустит. Однако поле version не является обязательным. Если файл вообще имеет декларацию XML, декларация должна содержать поле version .

...