0

我正在使用 libxml 库在 C++ 中编写 XML 解析器,该库要求我根据内联指定的 DTD 验证 XML。我不想在我的程序中使用 system() 。否则我可以使用 xmllint 命令。

我遇到了http://xmlsoft.org/ API 页面中指定的xmlValidateDtd(xmlValidCtxtPtr ctxt, xmlDocPtr doc, xmlDtdPtr dtd)函数。但我觉得它是基于 DOM 的函数,因为在 SAX 解析中没有 xmlDocPtr。

是否有任何其他方法可以根据内联 DTD 验证 XML 文档?

4

1 回答 1

0

通常,您只需提供XML_PARSE_DTDVALID解析器选项,以便在解析时验证文档。

如果文档已经在未经验证的情况下被解析,您可以使用xmlValidateDocument

int xmlValidateDocument (xmlValidCtxtPtr ctxt, 
                         xmlDocPtr doc)

尝试验证文档实例基本上它执行 XML Rec 描述的所有检查,即验证内部和外部子集(如果存在)并验证文档树。

ctxt:验证上下文
doc:文档实例
Returns:1 如果有效,否则为 0

于 2014-06-17T10:30:08.127 回答