Use JDK API to parse XML files

Use JDK API to parse XML files.
Note: XML constraint files are of type dtd

import org.w3c.dom.Document;
import org.xml.sax.ErrorHandler;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import org.xml.sax.SAXParseException;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;

public class XPathParser {
    
    

    public static void main(String[] args) {
    
    
        String file = "???.xml";
        InputStream is = null;
        try {
    
    
            is = new FileInputStream(file);
            Document doc = createDocument(is);
            System.out.println(doc);
        } catch (Exception e) {
    
    
            e.printStackTrace();
        } finally {
    
    
            if (null != is) {
    
    
                try {
    
    
                    is.close();
                } catch (IOException e) {
    
    
                    // ignore
                }
            }
        }
    }

    private static Document createDocument(InputStream inputStream) throws Exception {
    
    
        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
        factory.setValidating(true); // 开启校验
        factory.setIgnoringComments(true); // 忽略注释
        DocumentBuilder builder = factory.newDocumentBuilder();
        builder.setErrorHandler(new ErrorHandler() {
    
    
            public void error(SAXParseException exception) throws SAXException {
    
    
                throw exception;
            }

            public void fatalError(SAXParseException exception) throws SAXException {
    
    
                throw exception;
            }

            public void warning(SAXParseException exception) {
    
    
                // ignore
            }
        });

        InputSource inputSource = new InputSource(inputStream);
        return builder.parse(inputSource);
    }

}

Guess you like

Origin blog.csdn.net/adsl624153/article/details/111145964