Java 和 XML 集成的常用方法主要包括以下几种:
org.w3c.dom
包来支持 DOM 解析。import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
// 创建 DocumentBuilderFactory 实例
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
// 创建 DocumentBuilder 实例
DocumentBuilder builder = factory.newDocumentBuilder();
// 解析 XML 文件,获取 Document 实例
Document document = builder.parse(new File("example.xml"));
// 获取根元素
Element rootElement = document.getDocumentElement();
// 获取特定元素的集合
NodeList nodeList = rootElement.getElementsByTagName("tagName");
org.xml.sax
包来支持 SAX 解析。import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
public class MySAXHandler 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 {
// 处理字符事件
}
}
// 创建 SAXParserFactory 实例
SAXParserFactory factory = SAXParserFactory.newInstance();
// 创建 SAXParser 实例
SAXParser saxParser = factory.newSAXParser();
// 创建自定义的 DefaultHandler 实例
MySAXHandler handler = new MySAXHandler();
// 解析 XML 文件
saxParser.parse(new File("example.xml"), handler);
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;
import java.io.File;
// 创建 JAXBContext 实例
JAXBContext jaxbContext = JAXBContext.newInstance(ExampleClass.class);
// 创建 Unmarshaller 实例
Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
// 将 XML 文件转换为 Java 对象
ExampleClass exampleObj = (ExampleClass) unmarshaller.unmarshal(new File("example.xml"));
// 创建 Marshaller 实例
Marshaller marshaller = jaxbContext.createMarshaller();
// 设置输出格式
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
// 将 Java 对象转换为 XML 文件
marshaller.marshal(exampleObj, new File("output.xml"));
javax.xml.stream
包来支持 StAX 解析。这些方法都有各自的优缺点,可以根据实际需求选择合适的方法进行 Java 和 XML 的集成。