我正在使用libxml库在C ++中编写XML解析器,这需要我根据内联指定的DTD验证XML。我不想在我的程序中使用system()。否则我可以使用xmllint命令。
我遇到了http://xmlsoft.org/ API页面中指定的 xmlValidateDtd(xmlValidCtxtPtr ctxt,xmlDocPtr doc,xmlDtdPtr dtd)函数。但我觉得它是基于DOM的功能,因为在SAX解析中没有xmlDocPtr。
是否还有其他方法可以针对内联DTD验证XML文档?
答案 0 :(得分:0)
通常,您只需提供XML_PARSE_DTDVALID
解析器选项,因此在解析时将验证文档。
如果文档已经过解析而未经过验证,则可以使用xmlValidateDocument
:
int xmlValidateDocument (xmlValidCtxtPtr ctxt,
xmlDocPtr doc)
尝试验证文档实例基本上它执行XML Rec描述的所有检查,即验证内部和外部子集(如果存在)并验证文档树。
ctxt:
验证上下文
doc:
文档实例
Returns:
1如果有效,否则为0