xerces-c-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Freimann, Mario" <mario.freim...@siemens.com>
Subject AW: Reading german umlaute from xml file
Date Tue, 29 Jul 2008 06:52:11 GMT
After searching google and looking into the xerces example I realized that for stdout I have
to use a StdOutFormatTarget. The xml is written to stdout now. Unfortunately the xerces parser
doesn't escape all xml special characters. So I have two questions. Any help is really appreciated.

- Why isn't the umlaut ü converted to &#252;?

- Why isn't the quotation sign converted to &quot; by the transcoder?


The OS is still Red Hat Enterprise, Xerces 2.7.


[[output (ü is distorted by shell?)]]

debug xData [München -> <- "'], eaten [16], charSizes [], xRet [16], xOut [M]
<?xml version="1.0" encoding="UTF-8" standalone="no" ?><xtestroot><test>München
-&gt; &lt;- "'</test></xtestroot>


[[code]]

utf8Transcoder = XMLPlatformUtils::fgTransService->makeNewTranscoderFor("ISO-8859-1", failReason,
16*1024);
DOMImplementation* _impl2 = DOMImplementationRegistry::getDOMImplementation(XMLString::transcode("LS"));
DOMDocument* _doc2 = _impl2->createDocument(0, XMLString::transcode("xtestroot"), 0);
DOMElement* _rootElem2 = _doc2->getDocumentElement();

//convert content
char* xData = "München -> <- \"'";
XMLCh* xOut = new XMLCh[ strlen(xData) * 6 + 1 ];
int xRet = utf8Transcoder->transcodeFrom( (const XMLByte*)xData, strlen(xData), xOut, strlen(xData)
* 6 + 1, eaten, charSizes );
printf("debug xData [%s], eaten [%d], charSizes [%s], xRet [%d], xOut [%s]\n", xData, eaten,
charSizes, xRet, xOut );

//create xml
DOMElement* nextNode2 = _doc2->createElement(XMLString::transcode("test"));
_rootElem2->appendChild(nextNode2);
DOMText* nodeData2 = _doc2->createTextNode( xOut );
nextNode2->appendChild(nodeData2);

//write xml
DOMWriter* theSerializer2 = ((DOMImplementationLS*)_impl2)->createDOMWriter();
XMLFormatTarget *myFormatTarget = new StdOutFormatTarget();
theSerializer2->writeNode( myFormatTarget, *_doc2 );
printf("\n");fflush(stdout);


With kind regards,

Mario Freimann

Mime
View raw message