Download dom4j-1.6.1.zip开发工具和帮助文档
1.DOM4J关系图
2.增删读写相关源码
import java.io.File; import java.io.FileOutputStream; import java.util.List; import org.dom4j.Attribute; import org.dom4j.Document; import org.dom4j.DocumentHelper; import org.dom4j.Element; import org.dom4j.Node; import org.dom4j.io.OutputFormat; import org.dom4j.io.SAXReader; import org.dom4j.io.XMLWriter; public class Test { /** * http://blog.csdn.net/strawberry2013 * Strawberry2013-5-23 */ public static void main(String[] args) throws Exception { /* * 通过集合的方式 增删改查 标签和属性,将一个父标签下的子标签装入一个集合中,然后通过增删修改集合达到修改xml文档的目的! */ SAXReader reader = new SAXReader(); // 读取文档 Document document = reader.read(new File("src/readWrite.xml")); // 查找需要的标签,使用xPath,可以最大方便的查找 List<Element> list = document.selectNodes("//name");// 该xPath意为寻找所有的name标签 for (int i = 0, size = list.size(); i < size; i++) { if (list.get(i).getText().equals("http://blog.csdn.net/strawberry2013")) { // 增删改查均对List集合进行操作 Element parentElement = list.get(i).getParent(); // 得到父节点 List<Element> elements = parentElement.elements(); // 得到父节点下的所有子节点 Element newElement = DocumentHelper.createElement("num");// 新建标签 newElement.setText("Java"); elements.add(2, newElement); // 标签--增 elements.remove(2); // 标签--删 elements.set(2, newElement); // 标签--改 elements.get(i); // 标签--查 } } Element currentElement = list.get(0); List<Attribute> attributes = currentElement.attributes(); for (int i = 0, size = attributes.size(); i < size; i++) { if (attributes.get(i).getName() == "color") { Attribute attr = DocumentHelper.createAttribute(currentElement, "color", "Green"); // attributes.add(attr); //属性--增 attributes.remove(i); //属性--删 // attributes.set(i, attr); //属性--改 // attributes.get(i); //属性--查 } } /* * 通过dom4j特有的属性和方法,更简单一些 */ Element childElement = list.get(0); // 父节点 Element parentElement = childElement.getParent(); // 子节点 parentElement.addElement("num").setText("Info"); // 标签--增 parentElement.remove(childElement); // 标签--删 childElement.setText("OKKK"); // 标签--改查 // 与之有关的方法setName(),setText(),getName(),getText() String country = "China"; currentElement = childElement; List<Attribute> attributes = currentElement.attributes(); Attribute attr = DocumentHelper.createAttribute(childElement, "country", country); // if(parent.attribute("country") == null){//判断属性是否存在 // parent.add(attr); // }else{ childElement.setAttributeValue("country", country); //} // 属性--改 // parent.add(attr); // 属性--增 attributes.remove(1); // 属性--删 attributes.get(0); // 属性--查 //将数据写到文档中去 OutputFormat format = OutputFormat.createPrettyPrint();// 新建漂亮的格式输出对象 format.setEncoding("UTF-8");// 设置打印的编码,该编码应该和xml文档编码类型一致 XMLWriter writer = new XMLWriter(new FileOutputStream( "src/readWrite.xml"), format);// 注意,FileWriter字符流以默认的Gbk编码 writer.write(document); //写入 writer.close(); //关闭 } }
<?xml version="1.0" encoding="UTF-8"?> <book> <sale> <books id="001" country="Chinaxsxs"> <name id="21" color="red">http://blog.csdn.net/strawberry2013</name> <author>张三</author> <price>20</price> <description>该书简介</description> <num>222</num> <num>22sss</num> <num>22sss</num> </books> <books id="002"> <name>java语法</name> <author>李四</author> <price>30.90</price> <description>语法很好</description> </books> </sale> </book>