欢迎访问宙启技术站
智能推送

如何在Java中解析XML文档?

发布时间:2023-05-24 06:08:46

在Java中解析XML文档主要有两种方式:DOM和SAX解析。DOM解析是将整个XML文档加载到内存中,然后以树形结构进行操作;SAX解析则是边读边解析,逐行扫描XML文档。

DOM解析:

1. 创建 DocumentBuilderFactory 对象

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();

2. 创建 DocumentBuilder 对象

DocumentBuilder builder = factory.newDocumentBuilder();

3. 使用 DocumentBuilder 对象解析XML文件

Document document = builder.parse(new File("文件路径"));

4. 获取根节点

Element root = document.getDocumentElement();

5. 获取子节点

NodeList nodeList = root.getChildNodes();

6. 遍历子节点并获取节点值

for(int i = 0; i < nodeList.getLength(); i++){
    Node node = nodeList.item(i);
    String nodeName = node.getNodeName();
    if("节点名称".equals(nodeName)){
        String nodeValue = node.getTextContent();
    }
}

SAX解析:

1. 创建 SAXParserFactory 对象

SAXParserFactory factory = SAXParserFactory.newInstance();

2. 创建 SAXParser 对象

SAXParser saxParser = factory.newSAXParser();

3. 继承 DefaultHandler 类并重写方法

class MyHandler extends DefaultHandler{
    @Override
    public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
        //节点开始时调用
    }

    @Override
    public void endElement(String uri, String localName, String qName) throws SAXException {
        //节点结束时调用
    }

    @Override
    public void characters(char[] ch, int start, int length) throws SAXException {
        //读取到节点值时调用
    }
}

4. 使用 SAXParser 和 MyHandler 解析XML

saxParser.parse(new File("文件路径"), new MyHandler());