Настройка вывода XercesC на UTF-8

Я использую XercesC Lib для создания сериализации моих данных. Как я могу установить его на UTF-8? Он всегда генерируется с UTF-16, и я не могу найти способ изменить это.

xercesc::DOMImplementation *gRegistry = xercesc::DOMImplementationRegistry::getDOMImplementation(X("Core"));
xercesc::DOMDocument *doc = gRegistry->createDocument(
0,                      // root element namespace URI.
X(oDocumentName.c_str()),       // root element name
0);                 // document type object (DTD).
doc->setXmlStandalone(true);
... prepare the document ...
serializer = ((xercesc::DOMImplementationLS *)gRegistry)->createLSSerializer();
serializer->setNewLine(xercesc::XMLString::transcode("\n"));

XMLCh *xmlresult = serializer->writeToString(doc);
char *temp = xercesc::XMLString::transcode(xmlresult);
std::string result(temp);

xercesc::XMLString::release(&temp);
xercesc::XMLString::release(&xmlresult);
doc->release();
serializer->release();
getStream() << result.c_str();

Когда я десериализую с помощью JAXB на стороне Java, я всегда получаю content is not allowed in prolog и пока это единственное отличие, которое я вижу в XML. Когда я пытаюсь локально десериализовать в JAXB, это работает. Когда я беру свой XercesC XML, я получаю эту ошибку. Когда я пытаюсь отформатировать его в Notepad ++ с помощью плагина XML, он также говорит, что произошла ошибка, но не сообщает мне никаких подробностей.

1

Решение

Проверьте использование DOMLSOutput, это должно дать вам именно то, что вы хотите. То есть Вы создаете DOMLSOutput объект, к которому вы пишете (вместо использования DOMLSSerializer::writeToString).

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]