Xerces-C valida xml con xsd @ codifica

Estoy escribiendo una biblioteca que toma archivos xml y los analiza. Para evitar que los usuarios alimenten xmls inalídicos en mi aplicación, estoy usando xerces para validar los archivos xml a través de un xsd.

Sin embargo, solo logro validar contra archivos xsd. Teóricamente, un usuario podría simplemente abrir este archivo y jugar con él. Es por eso que me gustaría que mi xsd esté codificado en mi biblioteca.

amentablemente, todavía no he encontrado una manera de hacer esto con XercesC ++.

Así es como está funcionando ahora ...

bool XmlParser::validateXml(std::string a_XsdFilename)
{
    xercesc::XercesDOMParser  domParser;
    if (domParser.loadGrammar(a_XsdFilename.c_str(), xercesc::Grammar::SchemaGrammarType) == NULL)
    {
        throw Exceptions::Parser::XmlSchemaNotReadableException();
    }

    XercesParserErrorHandler parserErrorHandler;

    domParser.setErrorHandler(&parserErrorHandler);
    domParser.setValidationScheme(xercesc::XercesDOMParser::Val_Always);
    domParser.setDoNamespaces(true);
    domParser.setDoSchema(true);
    domParser.setValidationSchemaFullChecking(true);

    domParser.parse(m_Filename.c_str());

    return (domParser.getErrorCount() == 0);

}

std::string m_Filename es una variable miembro que contiene la ruta del xml que valido.

std::string a_XsdFilename es la ruta a la xsd con la que valido.

XercesParserErrorHandler hereda dexercesc::ErrorHandler y maneja los errores.

¿Cómo puedo reemplazarstd::string a_XsdFilename con algo comostd::string a_XsdText? Dóndestd::string a_XsdText contiene la definición del esquema en sí en lugar de una ruta a un archivo que contiene la definición del esquema.

Respuestas a la pregunta(1)

Su respuesta a la pregunta