XML(可扩展标记语言)是一种广泛用于存储和传输结构化数据的文本格式。Java DOM(文档对象模型)API 提供了一套全面的工具,用于在 Java 应用程序中解析和操作 XML 文档。
解析 XML 文档
第一步是使用 DOM 解析器解析 XML 文档。DOM 解析器将 XML 文档转换为一个文档对象树,其中包含文档中所有元素、属性和文本节点的表示。
// 创建 DOM 解析器工厂
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
// 创建 DOM 解析器
DocumentBuilder builder = factory.newDocumentBuilder();
// 解析 XML 文档
Document document = builder.parse("path/to/file.xml");
遍历文档树
解析 XML 文档后,就可以使用 DOM API 在文档树中遍历并操作元素和属性。
获取根元素
Element root = document.getDocumentElement();
获取子元素
NodeList children = root.getChildNodes();
for (int i = 0; i < children.getLength(); i++) {
Element child = (Element) children.item(i);
// ...
}
获取属性值
String value = root.getAttribute("name");
添加新元素
Element newElement = document.createElement("newElement");
root.appendChild(newElement);
设置属性
root.setAttribute("newAttribute", "newValue");
保存修改
对文档树所做的任何更改都将保存在内存中。要将更改持久化到文件,需要使用一个 Transformer。
// 创建 Transformer 工厂
TransformerFactory factory = TransformerFactory.newInstance();
// 创建 Transformer
Transformer transformer = factory.newTransformer();
// 将文档转换为结果树
Source input = new DOMSource(document);
Result output = new StreamResult(new File("output.xml"));
// 保存更改
transformer.transform(input, output);
示例
以下是一个使用 DOM API 解析和操作 XML 文档的示例代码:
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document document = builder.parse("data.xml");
Element root = document.getDocumentElement();
System.out.println("根元素:" + root.getNodeName());
NodeList children = root.getChildNodes();
for (int i = 0; i < children.getLength(); i++) {
Element child = (Element) children.item(i);
System.out.println("子元素:" + child.getNodeName());
}
Element newElement = document.createElement("newItem");
newElement.appendChild(document.createTextNode("新值"));
root.appendChild(newElement);
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
Source input = new DOMSource(document);
Result output = new StreamResult(new File("output.xml"));
transformer.transform(input, output);
结论
Java DOM API 提供了强大且灵活的功能,用于在 Java 应用程序中解析和操作 XML 文档。通过使用 DOM,开发人员可以轻松地遍历文档树,获取元素和属性的值,并对文档进行修改。遵循本文中概述的步骤,您可以掌握使用 DOM API 驯服 XML 文档的技巧。