如何在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());
