我正在使用此代码通过XSD验证我的XML
DocumentBuilder parser = factory.newDocumentBuilder();
// Parse the file. If errors found, they will be printed.
parser.parse(args[1]);
但我想知道它是如何工作的,它会检查标签还是所有数据? 它有多可靠?
答案 0 :(得分:1)
您可以执行以下操作,在文档解析器之后,根据XML架构验证生成的DOM。您可以设置ErrorHandler
的实例,以便您可以选择如何处理验证错误。
public class Demo {
public static void main(String[] args) throws Exception {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setNamespaceAware(true);
DocumentBuilder parser = factory.newDocumentBuilder();
Document document = parser.parse(args[1]);
DOMSouce source = new DOMSource(document);
SchemaFactory sf = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
Schema schema = sf.newSchema(new File("customer.xsd"));
Validator validator = schema.newValidator();
validator.setErrorHandler(new MyErrorHandler());
validator.validate(source);
}
}
或者你可以在setSchema
上调用DocumentBuilderFactory
,以便在解析期间进行验证,但所有DOM解析器都不支持:
了解更多信息
以下是我博客中使用此架构验证方法的示例的链接。在该示例中,使用JAXBSource
而不是DOMSource
,但其他所有内容都相同。