stax xml validation

前端 未结 3 1485
余生分开走
余生分开走 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:45

    There are two ways of XML validation possible with SAX and DOM:

    1. validate alone - via Validator.validate()
    2. validate during parsing - via DocumentBuilderFactory.setSchema() and SAXParserFactory.setSchema()

    With StAX, validation is possible, but only the first way of doing it.

    You can try something like this:

    import javax.xml.validation.*;
    import javax.xml.transform.stax.*;
    import javax.xml.stream.*;
    import javax.xml.*;
    import java.io.*;
    
    public class StaxValidation {
    
        public static void main (String args[]) throws Exception {
    
            XMLStreamReader reader = XMLInputFactory.newInstance().createXMLStreamReader(new FileInputStream("test.xml"));
    
            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));
    
            //no exception thrown, so valid
            System.out.println("Document is valid");
    
        }
    }
    

提交回复
热议问题