dom4j解析xml 檔案 並對其操作
阿新 • • 發佈:2018-11-28
程式碼例項
package cn.test.dom4jtest; import java.io.FileOutputStream; import java.util.List; import org.dom4j.Document; import org.dom4j.DocumentHelper; import org.dom4j.Element; import org.dom4j.io.OutputFormat; import org.dom4j.io.SAXReader; import org.dom4j.io.XMLWriter; public class TestDom4j { public static void main(String[] args) throws Exception { selectName(); selectSingleName(2); addAgeBefore(); } public static void addAgeBefore() throws Exception{ /* * 1建立解析器 * 2得到document * 3得到根節點 * * 4得到第1個 p1 * 5獲得p1下面所有元素 * elements()方法返回list集合 * 使用list 裡面的方法 在特定位置新增元素 * 第一個引數是位置下標 從0開始 * 6回寫xml */ SAXReader saxReader = new SAXReader(); Document document = saxReader.read("src/person.xml"); Element root =document.getRootElement(); Element p1 = root.element("p1"); List<Element> list = p1.elements(); //新增元素 Element school=DocumentHelper.createElement("school"); school.setText("one"); list.add(1,school); //回寫xml OutputFormat format =OutputFormat.createPrettyPrint(); XMLWriter xmlWriter=new XMLWriter(new FileOutputStream("src/person.xml"),format); xmlWriter.write(document); xmlWriter.close(); } //查詢 xml中第n個 name元素的值 public static void selectSingleName(int index) throws Exception{ /* * 1建立解析器 * 2得到document * 3得到根節點 * * 4得到第n個 p1 * 5得到p1 name下面的值 */ SAXReader saxReader = new SAXReader(); Document document = saxReader.read("src/person.xml"); Element root =document.getRootElement(); List<Element > list = root.elements("p1"); if(list.size()>=index){ Element element=list.get(index-1); Element name=element.element("name"); System.out.println(name.getText()); }else{ System.out.println("no search"); } } //查詢 xml中所用name元素的值 public static void selectName() throws Exception{ /* * 1建立解析器 * 2得到document * 3得到根節點 * * 4得到p1 * 5得到p1 name下面的值 */ SAXReader saxReader = new SAXReader(); Document document = saxReader.read("src/person.xml"); Element root =document.getRootElement(); List<Element > list = root.elements("p1"); //遍歷list for (Element element : list) { Element name=element.element("name"); System.out.println(name.getText()); } } }