我正在尝试使用Xerces-J验证
XML文档.
我希望验证器获取并解析任何关联的XSD或DTD文件(使用schemalocation,nonamespaceschemalocationa和DOCTYPE引用).似乎可以将这些资源的加载委托给Resolver类.
然而,我见过的所有样本都是从模式创建验证器开始的.
是否有可能以相反的方式驱动它,请求xerces验证XML文档,并让它加载它需要的东西,或者我必须首先解析XML文件寻找模式引用,加载它们,然后从模式创建验证器?
在理想的世界中,验证器也支持xsd 1.1
您在查找<!DOCTYPE声明或架构属性时提供了一个EntityResolver解析器.最常见的实体解析器使用目录文件,这些文件本质上是XML文件或文本文件,用于定义公共ID,系统ID和物理文件URI的字典.请参阅
org.apache.xml.resolver包.但您也可以提供自己的
EntityResolver实施.
原文链接:https://www.f2er.com/xml/452465.htmlCatalogResolver resolver = new CatalogResolver(); DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); dbf.setValidating(true); dbf.setFeature("http://apache.org/xml/features/validation/dynamic",true); DocumentBuilder parser = dbf.newDocumentBuilder(); parser.setEntityResolver(resolver); Document doc = parser.parse(someFile);