// 根据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.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");
anotherNameElement.setText("李四");
Element anotherAgeElement = anotherStuElement.addElement("age");
anotherAgeElement.setText("19");
return doc;
}
/**
* 通过字符串创建xml文档
* @param xmlStr
* @return
*/
public Document createDocumentByString(String xmlStr) {
Document doc = null;
try {
// 通过字符串转换直接构建xml文档
doc = DocumentHelper.parseText(xmlStr);
} catch (DocumentException e) {
e.printStackTrace();
}
return doc;
}
/**
* 修改xml
*
* @param inputXmlPath
*/
public void ModifyXml(String inputXmlPath) {
// 获取文件
File inputXml = new File(inputXmlPath);
try {
SAXReader saxReader = new SAXReader();
// 创建document
Document doc = saxReader.read(inputXml);
// 读取Students/student下所有具有属性stu的元素
List list = doc.selectNodes("/Students/student/@stu");
Iterator iter = list.iterator();
while (iter.hasNext()) {
Attribute attribute = (Attribute) iter.next();
if (attribute.getValue().equals("001"))
attribute.setValue("0001");
}
list = doc.selectNodes("/Students/student");
iter = list.iterator();
while (iter.hasNext()) {
Element element = (Element) iter.next();
Iterator iterator = element.elementIterator("name");
while (iterator.hasNext()) {
Element nameElement = (Element) iterator.next();
if (nameElement.getText().equals("张三"))
nameElement.setText("王五");
}
}
String outputPath = "xml/Students-Modified.xml";
saveDocument(doc, outputPath);
}
catch (DocumentException e) {
System.out.println(e.getMessage());
}
}
/**
* 将文档输出到文件保存,可指定格式化输出,可指定字符编码。
*
* @param document
* @param outputFile
*/
public void saveDocument(Docume