xerces-c-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Alberto Massari <amass...@datadirect.com>
Subject Re: AW: Reading german umlaute from xml file
Date Tue, 29 Jul 2008 08:13:58 GMT
Freimann, Mario wrote:
> 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;?
>   

As you can see from the XML PI printed in stdout, the serializer is 
writing UTF-8 symbols; you should force the encoding that you know is 
being used by the shell.

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

Quotation signs need to be escaped only inside attribute content (and 
only when it is also used as delimiter for the content itself).

Alberto

>
> 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