我正在使用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 ++中对其进行格式化时,它还说有错误,但没有告诉我任何细节。
答案 0 :(得分:3)
检查DOMLSOutput
的使用情况,这应该可以准确地提供您想要的内容。即您创建了一个DOMLSOutput
对象,而不是使用DOMLSSerializer::writeToString
)。