MSXML4 и установка строки кодирования - PullRequest
0 голосов
/ 27 августа 2010

Я использую 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 Ответ

1 голос
/ 28 августа 2010

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

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

...