libxml2(SAX 파서)를 사용하여 인라인 DTD를 사용하여 XML의 유효성을 검사하는 방법은 무엇입니까?
-
21-12-2019 - |
문제
인라인으로 지정된 DTD에 대해 XML의 유효성을 검사해야 하는 libxml 라이브러리를 사용하여 C++에서 XML 파서를 작성하고 있습니다.내 프로그램에서 system()을 사용하고 싶지 않습니다.그렇지 않으면 xmllint 명령을 사용할 수 있었습니다.
나는 ~을 발견했다 xmlValidateDtd(xmlValidCtxtPtr ctxt, xmlDocPtr doc, xmlDtdPtr dtd) 에 지정된 함수 http://xmlsoft.org/ API 페이지.하지만 SAX 구문 분석에는 xmlDocPtr이 없기 때문에 DOM 기반 함수라고 생각합니다.
인라인 DTD에 대해 XML 문서의 유효성을 검사하는 다른 방법이 있습니까?
해결책
일반적으로 다음을 제공하기만 하면 됩니다. XML_PARSE_DTDVALID
파서 옵션을 사용하므로 파싱 시 문서의 유효성이 검사됩니다.
문서가 유효성 검사 없이 이미 구문 분석된 경우 다음을 사용할 수 있습니다. xmlValidateDocument
:
int xmlValidateDocument (xmlValidCtxtPtr ctxt,
xmlDocPtr doc)
문서 인스턴스의 유효성을 검사해 보면 기본적으로 XML Rec에 설명된 모든 검사가 수행됩니다.내부 및 외부 하위 집합(있는 경우)의 유효성을 검사하고 문서 트리의 유효성을 검사합니다.
ctxt:
검증 컨텍스트
doc:
문서 인스턴스
Returns:
유효한 경우 1, 그렇지 않은 경우 0
제휴하지 않습니다 StackOverflow