MSXML4 и установка строки кодировки

Я использую MSXML4 для создания XML.

Я пытаюсь установить значение кодировки UTF-8.

Вот мой код:

const _bstr_t k_XML_Tag_Name ("xml");
const _bstr_t k_Processing_Tag_Name ("version=\"1.0\" encoding=\"utf-8\"");

MSXML2::IXMLDOMProcessingInstructionPtr pProccessingInstruction = m_pXmlDoc->createProcessingInstruction(k_XML_Tag_Name, k_Processing_Tag_Name);

HRESULT result = m_pXmlDoc->appendChild(pProccessingInstruction);

result всегда равно S_FALSE, а строка предварительной обработки:

<?xml version="1.0"?>

Итак, почему не отображается строка кодировки?


person cbrulak    schedule 27.08.2010    source источник
comment
Это social.msdn. microsoft.com/Forums/en-US/msxml/thread/ чем помочь?   -  person Steve Townsend    schedule 27.08.2010


Ответы (1)


Когда вы сохраняете xml в файл, вы должны увидеть объявление <?xml version="1.0" encoding="UTF-8"?>. Однако, согласно этой статье, при использовании свойства XML документ, возвращаемый декларацией, не содержит кодировку, которая, по-видимому, является преднамеренной. Это то поведение, с которым вы сталкиваетесь? В статье говорится, что:

Это нормально. Причина, по которой это сделано, заключается в том, что вы можете развернуться и вызвать LoadXML с этой строкой, и это сработает. Если этого не сделать, LoadXML завершится ошибкой с сообщением об ошибке: «Переключиться с текущей кодировки на указанную кодировку не поддерживается».

person Garett    schedule 27.08.2010