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 的集成。