1
我有一个dtd文件的char字符串,我需要一个xmlDtdPtr传递给xmlValidateDtd以及我的xml文档。使用libxml2从内存中读取DTD
随着DTD在当前目录中的文件我这样做:
xmlParserCtxtPtr ctxt = xmlNewParserCtxt();
xmlDocPtr doc = xmlCtxtReadFile(ctxt, filename, NULL,0);
xmlDtdPtr dtd = xmlParseDTD(NULL,(const xmlChar*)dtd_filename);
xmlValidateDtd(&(ctxt->vctxt),doc,dtd);
我尝试这样做:
XmlDocPtr dtd_doc = xmlReadMemory(dtd_string,sizeof(dtd_string),"blah.dtd",NULL,XML_PARSE_DTDLOAD);
xmlDtdPtr dtd = xmlNewDtd(dtd_doc,NULL,NULL,NULL);
,但我得到分析器错误抱怨<元素是一个无效的元素名称。 我找不到任何有关如何从内存中正确解析DTD的好例子或文档。