java 使用 dom4j 解析xml 文件
首先需要导入 dom4j-1.6.1.jar,以下是测试类。
public class TestDom4j {
public static void main(String[] args) throws Exception {
String path = TestDom4j.class.getClassLoader().getResource("student.xml").getFile();
// 读取整个xml文件到document
SAXReader reader = new SAXReader();
Document document = reader.read(new File(path));
// 遍历根节点
Element rootNode = document.getRootElement();
listNodes(rootNode);
// 修改属性并保存
rootNode.addAttribute("test", "123123213213213");
rootNode.attribute("count").setValue("3"); // 同setText
writeDocument(document);
}
@SuppressWarnings("unchecked")
private static void listNodes(Element node) {
// 输出节点的文本内容
System.out.println(node.getName() + " : " + node.getText());
// 获取所有属性和属性值
List<Attribute> attributes = node.attributes();
for (Attribute attribute : attributes) {
System.out.println(attribute.getName() + " : " + attribute.getValue());
}
// 遍历子节点
Iterator<Element> iterator = node.elementIterator();
while (iterator.hasNext()) {
Element chilrd = iterator.next();
listNodes(chilrd);
}
}
private static void writeDocument(Document document) throws Exception {
// OutputFormat format = OutputFormat.createCompactFormat(); // 紧凑型,不格式化
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("UTF-8");
FileOutputStream fileOutputStream = new FileOutputStream(new File("D:/test.xml"));
OutputStreamWriter streamWriter = new OutputStreamWriter(fileOutputStream);
XMLWriter xmlWriter = new XMLWriter(streamWriter, format);
xmlWriter.write(document);
xmlWriter.flush();
xmlWriter.close();
streamWriter.close();
fileOutputStream.close();
}
}
浙公网安备 33010602011771号