c++ string xml-parsing char xerces-c

c++ - Propósito de XMLString:: transcode



xml-parsing char (1)

Parece que no entiendo el propósito de XMLString::transcode(XMLCh*) y XMLString::transcode(char*) , porque obviamente no entiendo la diferencia entre XMLCh* y char* . ¿Alguien puede hacer las cosas más claras para mí?


Xerces codifica información como UTF-16 internamente. Los datos UTF-16 se almacenan usando el tipo de datos XMLCh .

Las cadenas ''C-style'' usan char que está en la página de códigos locales (probablemente UTF-8, pero depende de la plataforma y la configuración) transcode para convertir entre las dos.

Por ejemplo, si desea alimentar algunos datos de Xerces a otra biblioteca y esa biblioteca espera texto en la página de códigos locales, debe transcode . Además, si tiene datos de char y desea alimentarlo a Xerces, debe transcode a XMLCh , porque eso es lo que entiende Xerces.

Por ejemplo:

// to local code page DOMNode *node = ...; char* temp = XMLString::transcode(node->getNodeValue()); std::string value(temp); XMLString::release(&temp); // from local code page DOMElement *element = ...; XMLCh *tag = XMLString::transcode("test"); DOMNodeList *list = element->getElementsByTagName(tag); XMLString::release(&tag);

¡No olvides soltar la cuerda! Mejor es escribir un envoltorio alrededor de él, pero hay ejemplos disponibles en Internet (solo busque una clase llamada XercesString ).

Si quiere saber más acerca de las codificaciones, creo que debería leer Absolute Minimum Every Software Developer Absolutamente, Positivamente Debe Conocer Sobre Unicode y Conjuntos de Personajes (¡Sin Excusas!)