stax xml validation

前端 未结 3 1467
余生分开走
余生分开走 2020-12-04 20:18

I know I can validate xml-file when I use sax. But can I validate when I use Stax?

3条回答
  •  自闭症患者
    2020-12-04 20:39

    You can parse and validate with StAX in one pass. Use javax.xml.stream.util.StreamReaderDelegate:

     XMLStreamReader reader = XMLInputFactory.newInstance().createXMLStreamReader(new FileInputStream  ("test.xml"));
    
     reader = new StreamReaderDelegate(reader) {
         public int next() throws XMLStreamException {
              int n = super.next();
    
              // process event
    
              return n;
         }};
    
     SchemaFactory factory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
     Schema schema = factory.newSchema(new File("test.xsd"));
     Validator validator = schema.newValidator();
     validator.validate(new StAXSource(reader));
    

    Validator reads test.xml calling reader.next() and you process parsing events as usual.

提交回复
热议问题