[英]xml validation with local dtd passing local xml and dtd files using java
我發現了很多這樣的例子:
public static boolean validateXMLSchema(String xsdPath, String xmlPath){
try {
SchemaFactory factory =
SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
Schema schema = factory.newSchema(new File(xsdPath));
Validator validator = schema.newValidator();
validator.validate(new StreamSource(new File(xmlPath)));
} catch (IOException | SAXException e) {
System.out.println("Exception: "+e.getMessage());
return false;
}
return true;
}
}
展示了如何通過xsd驗證xml文件,我發現使用dtd文件做同樣的事情並不容易。 我有一堆使用不同類型的dtd的xml文件(dtd文件位於另一個位置),格式為:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE name SYSTEM "name.dtd">
<name>
.
.
.
</name>
與上面的示例類似,我應該如何使用dtd(傳遞本地xml和dtd路徑)進行驗證?
如果使用SAX解析器,則可能需要查看org.xml.sax.EntityResolver
接口。 您創建一個實現此接口的類,並在XMLReader
上調用.setEntityResolver(yourResolver)
。 如果DTD可用,大多數SAX解析器將自動驗證XML,否則您可能必須將validation
功能設置為true
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.