libxml2获取节点的xsd定义

问题描述

我有一个.xml文件和.xsd 使用libxml2解析和验证文件后,如何从架构中获取节点定义(限制,注释...)?

xmlInitParser();
xmlSchemaPtr schema = NULL;
xmlSchemaParserCtxtPtr schema_parser_ctxt = NULL;
int has_schema_errors = 0;
int ret = -1;
xmlSchemaValidCtxtPtr valid_ctxt = NULL;
schema_parser_ctxt = xmlSchemaNewParserCtxt("test.xsd");
xmlTextReaderPtr reader = NULL;
const char* filename = "file.xml";
reader = xmlReaderForFile(filename,NULL,0);

if (reader != NULL)
{
    if (valid_ctxt)
        xmlTextReaderSchemaValidateCtxt(reader,valid_ctxt,0);
    ret = xmlTextReaderRead(reader);
    while (ret == 1 && !has_schema_errors)
    {
        ret = xmlTextReaderRead(reader);
        xmlNodePtr node;
        node = xmlTextReaderCurrentNode(reader);
        // here i want get node deFinition from xsd

    }
}

解决方法

这对于libxml2是不可能的。