dom4j对XML进行增删改查(详细)

创建一个xml ,createXml

 

package com.sun.demo; import java.io.FileWriter; import java.io.Writer; import org.dom4j.Document; import org.dom4j.DocumentHelper; import org.dom4j.Element; import org.dom4j.io.OutputFormat; import org.dom4j.io.XMLWriter; public class XmlCreator { public void createXml() throws Exception { // 创建一个空的文档对象 Document doc = DocumentHelper.createDocument(); Element el_rowdata = doc.addElement("ROWDATA"); Element el_row = el_rowdata.addElement("ROW"); Element el_empno = el_row.addElement("EMPNO"); Element el_ename = el_row.addElement("ENAME"); el_empno.setText("7521"); el_ename.setText("史密斯"); Writer w = new FileWriter("src/demo.xml"); OutputFormat opf = OutputFormat.createPrettyPrint(); opf.setEncoding("GBK"); XMLWriter xw = new XMLWriter(w, opf); xw.write(doc); xw.close(); } public static void main(String[] args) throws Exception { XmlCreator xc = new XmlCreator(); xc.createXml(); } }

 

读取xml,ReadXml 

 

package com.sun.demo; import java.util.List; import org.dom4j.Attribute; import org.dom4j.Document; import org.dom4j.Element; import org.dom4j.io.SAXReader; public class ReadXml { /** * 使用XPath语法来直接定位到某个节点 */ public static void readElement() throws Exception { SAXReader sr = new SAXReader(); Document doc = sr.read("src/EMP.xml"); List list = doc.selectNodes("ROWDATA/ROW/EMPNO"); for (Object obj : list) { Element el = (Element) obj; System.out.println(el.getText()); } } /** * 使用XPath语法直接定位到某个属性 */ public static void readAttribute() throws Exception { SAXReader sr = new SAXReader(); Document doc = sr.read("src/EMP.xml");//相对路径,可以换成自己的绝对路径 List list = doc.selectNodes("ROWDATA/ROW/ENAME/@firstname"); for (Object obj : list) { Attribute el = (Attribute) obj; System.out.println(el.getText()); } } public static void main(String[] args) throws Exception { readElement(); } }

 

更新xml,UpdateXml

 

package demo; import java.io.FileWriter; import java.io.IOException; import java.io.Writer; import java.util.List; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.Element; import org.dom4j.io.OutputFormat; import org.dom4j.io.SAXReader; import org.dom4j.io.XMLWriter; public class UpdateXml { public void updateXml() throws IOException, DocumentException { SAXReader sr = new SAXReader(); String file = "src/EMP.xml"; Document doc = sr.read(file); List list = doc.selectNodes("ROWDATA/ROW/SAL"); for (Object obj : list) { Element ele = (Element) obj; String sal = ele.getText(); double n_sal = 0; if (sal != null && !sal.equals("")) { n_sal = Double.parseDouble(sal); } ele.setText("" + n_sal * 2); } OutputFormat opf = OutputFormat.createPrettyPrint(); opf.setEncoding("GBK"); Writer w = new FileWriter(file); XMLWriter xw = new XMLWriter(w, opf); xw.write(doc); xw.close(); } public static void main(String[] args) throws DocumentException, IOException { UpdateXml txr = new UpdateXml(); txr.updateXml(); } }

 

EMP.xml

 

<?xml version="1.0" encoding="UTF-8"?> <ROWDATA> <ROW> <EMPNO>7499</EMPNO> <ENAME firstname="zhang" lastname="shanfeng">ALLEN</ENAME> <JOB type="basic">SALESMAN</JOB> <MGR>7698</MGR> <HIREDATE>1981-2-20</HIREDATE> <SAL>3200.0</SAL> <COMM>300.00</COMM> <DEPTNO>30</DEPTNO> </ROW> <ROW> <EMPNO>7566</EMPNO> <ENAME>JONES</ENAME> <JOB>MANAGER</JOB> <MGR>7839</MGR> <HIREDATE>1981-4-2</HIREDATE> <SAL>5950.0</SAL> <COMM /> <DEPTNO>20</DEPTNO> </ROW> </ROWDATA>

 

 

你可能感兴趣的:(xml,exception,object,list,String,Class)