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"?>

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

1 ответ

Решение

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

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

Другие вопросы по тегам