標籤:
一、建立XML
// 建立XML public static void gernatorXML() { // 建立Document對象 Document doc = DocumentHelper.createDocument(); // 建立根節點students Element studentsElement = doc.addElement("students"); // 建立子節點student Element studentElement1 = studentsElement.addElement("student"); // 添加ID屬性 studentElement1.addAttribute("id", "1001"); // 添加子節點 studentElement1.addElement("name").setText("張三"); studentElement1.addElement("age").setText("18"); studentElement1.addElement("sex").setText("男"); studentElement1.addElement("phone").setText("13800138000"); studentElement1.addElement("address").setText("深圳寶安"); // 再建立同樣的2個student節點 Element studentElement2 = studentsElement.addElement("student"); // 添加ID屬性 studentElement2.addAttribute("id", "10012"); // 添加子節點 studentElement2.addElement("name").setText("李四"); studentElement2.addElement("age").setText("19"); studentElement2.addElement("sex").setText("女"); studentElement2.addElement("phone").setText("13412369854"); studentElement2.addElement("address").setText("上海"); // 再建立同樣的2個student節點 Element studentElement3 = studentsElement.addElement("student"); // 添加ID屬性 studentElement3.addAttribute("id", "10013"); // 添加子節點 studentElement3.addElement("name").setText("王五"); studentElement3.addElement("age").setText("25"); studentElement3.addElement("sex").setText("女"); studentElement3.addElement("phone").setText("13410110104"); studentElement3.addElement("address").setText("廣東"); try { // 建立XML 將Document寫入XML // 設定格式 OutputFormat format = OutputFormat.createPrettyPrint(); // 設定字元編碼也可以設定為gb2312或者gbk format.setEncoding("utf-8"); // 輸入 XMLWriter writer = new XMLWriter( new FileWriter("xml/students.xml"), format); // 寫入文檔 writer.write(doc); // 關閉流 writer.close(); // 輸出提示 System.out.println("======寫入成功======="); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } }
二、解析XML
// 讀取XML public static void getXML() { try { // 讀取XML SAXReader reader = new SAXReader(); Document doc = reader.read("xml/students.xml"); // 擷取根節點 Element root = doc.getRootElement(); // 擷取子節點集合 List<Element> stulList = root.elements(); // 遍曆 for (Element ele : stulList) { // 擷取屬性 String id = ele.attributeValue("id"); System.out.println("學生ID: " + id); // 擷取子節點的常值內容 name String name = ele.elementText("name"); // age年齡 String age = ele.elementText("age"); // sex String sex = ele.elementTextTrim("sex"); // phone String phone = ele.elementTextTrim("phone"); // address String address = ele.elementTextTrim("address"); System.out.println("姓名:" + name + "\t年齡: " + age + "\t 性別: " + sex + "\t\t電話:" + phone + "\t\t地址: " + address); } } catch (DocumentException e) { e.printStackTrace(); } }
三、增加節點
//增加新的節點 public static void addXML(){ try { //讀取XML建立解析器 SAXReader reader=new SAXReader(); //建立Document對象 Document doc=reader.read("xml/students.xml"); //擷取根節點 Element root=doc.getRootElement(); //建立新的節點 Element student=root.addElement("student"); //添加屬性 student.addAttribute("id", "10020"); //建立子節點 student.addElement("name").setText("張三丰"); student.addElement("age").setText("108"); student.addElement("sex").setText("男"); student.addElement("phone").setText("13800138001"); student.addElement("address").setText("武當山"); //寫入XML //設定字元編碼和格式 OutputFormat format=new OutputFormat(); format.setEncoding("utf-8"); //建立輸出資料流 XMLWriter writer=new XMLWriter(new FileWriter("xml/students.xml"), format); //寫入Document writer.write(doc); //關閉流 writer.close(); //給出提示 System.out.println("======增加成功======="); } catch (DocumentException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } }
四、修改節點
//修改節點內容根據 id10013將王五的姓名=王小五,年齡30,性別:男,電話:138000138000,地址:北京 public static void modify(){ try { //建立SAXReader解析器 SAXReader reader=new SAXReader(); //建立Document Document doc=reader.read("xml/students.xml"); //找到根節點 Element root=doc.getRootElement(); //子節點集合 List<Element> studentList=root.elements(); //遍曆尋找 for (Element ele : studentList) { if(ele.attributeValue("id").equals("10013")){ ele.element("name").setText("王小五"); ele.element("age").setText("30"); ele.element("sex").setText("男"); ele.element("phone").setText("138000138000"); ele.element("address").setText("北京"); } } //寫入XML //設定字元格式設定和編碼 OutputFormat format=new OutputFormat(); format.setEncoding("utf-8"); XMLWriter writer=new XMLWriter(new FileWriter("xml/students.xml"), format); //將Document寫入 writer.write(doc); //關閉流 writer.close(); //給出提示 System.out.println("====修改成功===="); } catch (DocumentException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } }
五、刪除節點XML
/刪除節點 刪除王小五的節點 public static void delete(){ try { //建立SAXReader 解析器 SAXReader reader=new SAXReader(); //建立Document對象 Document doc=reader.read("xml/students.xml"); //擷取根節點 Element root=doc.getRootElement(); //集合 List<Element> stuList=root.elements(); //遍曆 for (Element ele : stuList) { if(ele.attributeValue("id").equals("10013")){ //擷取父節點,並刪除這個節點 ele.getParent().remove(ele); } } //寫入XML //設定字元編碼格式 OutputFormat format =new OutputFormat(); format.setEncoding("utf-8"); //輸出資料流 XMLWriter writer=new XMLWriter(new FileWriter("xml/students.xml"), format); writer.write(doc); writer.close(); System.out.println("===刪除成功==="); } catch (DocumentException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } }
Java從零開始學四十三(DOM4j解析XML)