programa librerias lenguaje juegos funciones ejemplos comandos codigos codigo basicos c++ tree mapping codesynthesis

lenguaje - librerias de c++



Síntesis de código-serialización de subnodos de C++/Tree (2)

Si entiendo lo que estás preguntando, creo que quieres usar el indicador no_xml_declaration.

people (oss, p, map, "UTF-8", xml_schema::flags::no_xml_declaration);

Esto suprime la declaración XML, aunque para algunas versiones de Xerces-C resulta en una nueva línea espuria al principio que deberá eliminar. http://www.codesynthesis.com/pipermail/xsd-users/2009-December/002625.html

Para cualquier otra persona que haga referencia a esta pregunta más adelante, también debe invocar xsdcxx con --generate-serialization. Por defecto, solo se emiten métodos de análisis.

xsdcxx cxx-tree --generate-serialization {source XSD files}

Estoy usando esta gran herramienta (http://www.codesynthesis.com/products/xsd/c++/tree/) para convertir xsd en código c ++.

Estoy tratando de obtener la cadena xml de un subnodo, pero lo único que puedo obtener es el todo xml, como este:

el todo xml:

<?xml version="1.0"?> <people ....> <person id="1"> <first-name>John</first-name> <address> .... </address> </person> ...

Puedo obtener todo el xml haciendo algo como esto:

people_t& p = ... xml_schema::namespace_infomap map; map[""].schema = "people.xsd"; // Serialize to a string. // std::ostringstream oss; people (oss, p, map); std::string xml (oss.str ());

Pero lo que quiero es obtener solo el <sub nodo <dirección> xml por ejemplo. Esto es posible hacer? ¿Cómo se puede lograr?

Gracias


Sí, es posible. Si desea poder serializar solo el elemento de dirección, debe pasar la opción --root-element al comando CodeSynthesis XSD. En Ubuntu escribirías

xsdcxx cxx-tree --root-element address --generate-serialization people.xsd

Si, por otro lado, solo necesita el valor de la dirección, puede omitir la serialización y simplemente usar la address() función get address() generada