Java從零開始學四十三(DOM4j解析XML)

來源:互聯網
上載者:User

標籤:

一、建立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)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.