2012-12-21 116 views
1

可能重复:
Validating XML against XSDHows是否使用XSD Work进行XML验证?

我使用这个代码来验证我的XML与XSD

 DocumentBuilder parser = factory.newDocumentBuilder(); 

     // Parse the file. If errors found, they will be printed. 
     parser.parse(args[1]); 

,但我想知道它是如何工作的,将它检查标签或所有数据? 它有多可靠?

+0

要回答你的问题,你应该提供你正在使用类的完整路径。 –

回答

1

在文档解析器之后,您可以执行以下操作,结果DOM根据XML模式进行验证。您可以设置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); 
    } 

} 

另外,您可以拨打setSchemaDocumentBuilderFactory以便验证将在解析过程中发生的,但这不是所有DOM解析器支持:

对于更多信息

以下是我的博客中使用此架构验证方法的示例的链接。在这个例子中,使用了JAXBSource而不是DOMSource,但其他的都是一样的。