2

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();

Java 側で JAXB を使用してデシリアライズすると、常に が得られ、content is not allowed in prologこれが XML で確認できる唯一の違いです。JAXB でローカルにデシリアライズしようとすると、動作します。XercesC XML を取得すると、このエラーが発生します。XMLプラグインを使用してNotepad ++でフォーマットしようとすると、エラーがあると表示されますが、詳細はわかりません。

4

1 に答える 1