测试dom4j创建、修改、遍历XML (一)

2014-11-24 11:33:12 · 作者: · 浏览: 33

java项目概览:

XmlManage.java

[java]
package com.jialin;

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;

/**
* 测试DOM4J创建,修改,遍历XML
*
* @author jialin
*
*/
public class XmlManager {
public static void main(String[] args) {
XmlManager xmlManager = new XmlManager();
// 初始化xml文档
Document doc = null;
// 通过dom4j方法创建xml
// doc = xmlManager.createXml();

// XML字符串
// String strXMl = "< xml version=\"1.0\" encoding=\"UTF-8\" >"
// + "< xml-stylesheet type=\"text/xsl\" href=\"students.xsl\" >"
// + " "
// + "张三18
"
// + "李四19
";
// 通过字符串创建xml
// doc = xmlManager.createDocumentByString(strXMl);
// XMl输出路径
// String outputPath = "xml/Students.xml";
// 输出xml
// xmlManager.saveDocument(doc, outputPath);

// xml输入路径
String inputPath = "xml/Students.xml";

// 根据xml路径更改XML
//xmlManager.ModifyXml(inputPath);

// 根据xml路径获取doc
doc = xmlManager.getDocument(inputPath);
// 遍历XML
xmlManager.traversalDocumentByElementIterator(doc);
// xmlManager.traversalDocumentByVisitor(doc);
//xmlManager.traversalDocumentByElements(doc);
//xmlManager.traversalDocumentByselectNodes(doc, "/Students/student/name");
}

/**
* 获取XML文件
* @param inputPath
* @return
*/
public Document getDocument(String inputPath) {
// 输入文件
File inputXml = new File(inputPath);
SAXReader saxReader = new SAXReader();
Document document = null;
try {
document = saxReader.read(inputXml);
} catch (DocumentException e) {
e.printStackTrace();
}
return document;
}

/**
* 通过Dom4j方法创建xml文档
*
* @return
*/
public Document createXml() {
Document doc = DocumentHelper.createDocument();
// 创建ProcessingInstruction
Map inMap = new HashMap();
inMap.put("type", "text/xsl");
inMap.put("href", "students.xsl");
doc.addProcessingInstruction("xml-stylesheet", inMap);
// 增加根节点
Element studentsElement = doc.addElement("Students");
// 增加注释
studentsElement.addComment("Students Table");
// 增加子节点
Element stuElement = studentsElement.addElement("student");
// 增加属性
stuElement.addAttribute("stu", "001");
// 增加名称节点
Element nameElement = stuElement.addElement("name");
// 设置名称节点的值
nameElement.setText("张三");
// 增加年龄节点
Element ageElement = stuElement.addElement("age");
// 设置年龄节点的值
ageElement.setText("18");

// 同上
Element anotherStuElement = studentsElement.addElement("student");
anotherStuElement.addAttribute("stu", "002");
Element anotherNameElement = anotherStuElement.addElement("name");