簡體   English   中英

如何使用libxml2(SAX解析器)使用內聯DTD驗證XML?

[英]How to validate an XML using inline DTD using libxml2 (SAX parser)?

我正在使用libxml庫在C ++中編寫XML解析器,這需要我針對內聯指定的DTD驗證XML。 我不想在程序中使用system()。 否則,我本可以使用xmllint命令。

我遇到了在http://xmlsoft.org/ API頁面中指定的xmlValidateDtd(xmlValidCtxtPtr ctxt,xmlDocPtr doc,xmlDtdPtr dtd)函數。 但是我覺得它是基於DOM的功能,因為在SAX解析中沒有xmlDocPtr。

還有其他方法可以根據內聯DTD驗證XML文檔嗎?

通常,您只需提供XML_PARSE_DTDVALID解析器選項,因此在解析文檔時將對其進行驗證。

如果文檔已經被未經驗證地解析,則可以使用xmlValidateDocument

int xmlValidateDocument (xmlValidCtxtPtr ctxt, 
                         xmlDocPtr doc)

嘗試驗證文檔實例,基本上它會執行XML Rec描述的所有檢查,即驗證內部和外部子集(如果存在)並驗證文檔樹。

ctxt:驗證上下文
doc:文檔實例
Returns:如果有效則Returns: 1,否則Returns: 0

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM