【工程截圖】java
【person.xml】準備一個xml文件dom
<?xml version="1.0" encoding="UTF-8"?> <students> <student id="88888" phone="15888888888" sex="男"> <name>張三</name> <age>18</age> <school>清華</school> </student> <student id="99999" phone="15999999999" sex="女"> <name>李四</name> <age>28</age> <school>北大</school> </student> <AAAA> <aa1>aa111</aa1> <aa2>aa222</aa2> </AAAA> <BBBB></BBBB> </students>
【讀取原有Xml文件的內容,而後將數據寫入到磁盤上】編碼
package com.Higgin.dom4j; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.io.SAXReader; import org.dom4j.io.XMLWriter; /** * 讀出原有xml文件的內容數據,而後將數據寫入到磁盤上的XML文件 */ public class WriteDemo01 { public static void main(String[] args) throws DocumentException, IOException { //讀取已存在的Xml文件person.xml Document doc=new SAXReader().read(new File("./src/person.xml")); //指定文件輸出的位置 FileOutputStream out =new FileOutputStream("d:/student.xml"); //1.建立寫出對象 XMLWriter writer=new XMLWriter(out); //2.寫出Document對象 writer.write(doc); //3.關閉流 writer.close(); } }
【運行結果】內容和person.xml一致spa
【按照設定的格式將xml內容輸出保存到對應的磁盤地址上】調試
package com.Higgin.dom4j; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.io.OutputFormat; import org.dom4j.io.SAXReader; import org.dom4j.io.XMLWriter; /** * 1.讀出原有xml文件的內容數據,保存至Document對象 * 2.修改輸出的format(輸出格式、編碼...) * 3.而後將document包含數據寫入到磁盤上的XML文件 */ public class WriteDemo02 { public static void main(String[] args) throws DocumentException, IOException { //讀取已存在的Xml文件person.xml Document doc=new SAXReader().read(new File("./src/person.xml")); //指定文件輸出的位置 FileOutputStream out =new FileOutputStream("d:/student.xml"); /** * 指定文本的寫出的格式: * 緊湊格式 :項目上線時候使用 * 漂亮格式:開發調試的時候使用 */ //OutputFormat format=OutputFormat.createCompactFormat(); //緊湊格式:去除空格換行 OutputFormat format=OutputFormat.createPrettyPrint(); //漂亮格式:有空格換行 /** * 指定生成的xml文檔的編碼影響了: * 1.xml文檔保存時的編碼 * 2.xml文檔聲明的encoding編碼(Xml解析時的編碼) * 結論:使用該方法生成Xml文檔能夠避免中文亂碼問題 */ format.setEncoding("UTF-8"); //1.建立寫出對象 XMLWriter writer=new XMLWriter(out,format); //2.寫出Document對象 writer.write(doc); //3.關閉流 writer.close(); } }
【運行結果】code
一樣在D盤下生成了一個student.xml文件orm
1.緊湊格式:xml
2.漂亮格式對象
3.注意:blog
/**
* 指定生成的xml文檔的編碼影響了:
* 1.xml文檔保存時的編碼
* 2.xml文檔聲明的encoding編碼(Xml解析時的編碼)
* 結論:使用該方法生成Xml文檔能夠避免中文亂碼問題
*/
【增、刪、改 Xml文件
/**
* 1.建立Document對象,
* 添加:各類標籤、屬性、文本
* 修改:屬性值、文本
* 刪除:標籤、屬性
* 2.修改輸出的format(輸出格式、編碼...)
* 3.而後將document包含數據寫入到磁盤上的XML文件
*/
】
【增長:文檔、標籤、屬性】
/** * 增長:文檔、標籤、屬性 */ @Test public void testAdd() throws DocumentException, IOException { //1.建立文檔 Document doc=DocumentHelper.createDocument(); //2.添加標籤 Element rootElem=doc.addElement("root"); Element stuElem=rootElem.addElement("student"); stuElem.addElement("name"); //4.增長屬性 stuElem.addAttribute("id", "88888"); stuElem.addAttribute("sex", "男"); //指定文件輸出的位置 FileOutputStream out =new FileOutputStream("d:/student.xml"); // 指定文本的寫出的格式: OutputFormat format=OutputFormat.createPrettyPrint(); //漂亮格式:有空格換行 format.setEncoding("UTF-8"); //1.建立寫出對象 XMLWriter writer=new XMLWriter(out,format); //2.寫出Document對象 writer.write(doc); //3.關閉流 writer.close(); }
【運行結果】
【修改:屬性值、文本】
/** * 修改:屬性值、文本 */ @Test public void testUpdate() throws DocumentException, IOException{ //建立Document對象,讀取已存在的Xml文件person.xml Document doc=new SAXReader().read(new File("./src/person.xml")); /** * 修改屬性值(方案一) * 方法:使用Attribute類(屬性類)的setValue()方法 * 1.獲得標籤對象 * 2.獲得屬性對象 * 3.修改屬性值 */ /* //1.1 獲得標籤對象 Element stuElem=doc.getRootElement().element("student"); //1.2 獲得id屬性對象 Attribute idAttr=stuElem.attribute("id"); //1.3 修改屬性值 idAttr.setValue("000001"); */ /** * 修改屬性值(方案二) * 方法:Element標籤類的addAttribute("attr","value")方法 */ /* //1.獲得屬性值標籤 Element stuElem=doc.getRootElement().element("student"); //2.經過增長同名屬性的方法,修改屬性值 stuElem.addAttribute("id", "000009"); //key相同,覆蓋;不存在key,則添加 */ /** * 修改文本 * 方法:Element標籤類的setTest("新文本值")方法 * 1.獲得標籤對象 * 2.修改文本 */ Element nameElem=doc.getRootElement().element("student").element("name"); nameElem.setText("王二麻子"); //指定文件輸出的位置 FileOutputStream out =new FileOutputStream("d:/student.xml"); // 指定文本的寫出的格式: OutputFormat format=OutputFormat.createPrettyPrint(); //漂亮格式:有空格換行 format.setEncoding("UTF-8"); //1.建立寫出對象 XMLWriter writer=new XMLWriter(out,format); //2.寫出Document對象 writer.write(doc); //3.關閉流 writer.close(); }
【刪除:標籤、屬性】
/** * 刪除:標籤、屬性 */ @Test public void testDelete() throws DocumentException, IOException{ //建立Document對象,讀取已存在的Xml文件person.xml Document doc=new SAXReader().read(new File("./src/person.xml")); /** * 刪除標籤 * 1.獲得標籤對象 * 2.刪除標籤對象(能夠經過父類刪除子標籤,也能夠本身刪本身) */ /* Element ageElement=doc.getRootElement().element("student").element("age"); ageElement.detach(); //直接detch()刪除 //ageElement.getParent().remove(ageElement); //先獲取父標籤,而後remove()刪除子標籤 */ /** * 刪除屬性 */ //1.獲得標籤對象 //等同於Element stuElem=doc.getRootElement().element("student"); Element stuElem=(Element) doc.getRootElement().elements().get(0); //2.獲得屬性對象 Attribute idAttr=stuElem.attribute("id"); //3.刪除屬性 idAttr.detach(); //指定文件輸出的位置 FileOutputStream out =new FileOutputStream("d:/student.xml"); // 指定文本的寫出的格式: OutputFormat format=OutputFormat.createPrettyPrint(); //漂亮格式:有空格換行 format.setEncoding("UTF-8"); //1.建立寫出對象 XMLWriter writer=new XMLWriter(out,format); //2.寫出Document對象 writer.write(doc); //3.關閉流 writer.close(); }