最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java中使用DOM4J生成xml文件并解析xml文件的操作

 更新時間:2021年09月10日 09:39:25   作者:小王寫博客  
這篇文章主要介紹了Java中使用DOM4J來生成xml文件和解析xml文件的操作,今天通過代碼給大家展示了解析xml文件和生成xml文件的方法,需要的朋友可以參考下

一、前言

現(xiàn)在有不少需求,是需要我們解析xml文件中的數(shù)據(jù),然后導(dǎo)入到數(shù)據(jù)庫中,當(dāng)然解析xml文件也有好多種方法,小編覺得還是DOM4J用的最多最廣泛也最好理解的吧.小編也是最近需求里遇到了,就來整理一下自己的理解,只適合剛剛學(xué)習(xí)的,一起理解!今天我們把解析xml文件和生成xml文件在一起來展示.

二、準(zhǔn)備依賴

 <dependency>
	 <groupId>dom4j</groupId>
	 <artifactId>dom4j</artifactId>
	 <version>1.6.1</version>
      </dependency>

三、生成xml文件生成標(biāo)準(zhǔn)展示

生成xml代碼

/**
     * 使用DOM4J生成xml方法
     */
    public static void createXml(){
        try {
            // 創(chuàng)建document對象
            Document document = DocumentHelper.createDocument();
            // 創(chuàng)建根節(jié)點bookRoot
            Element StudentRoot = document.addElement("StudentRoot");
            // 向根節(jié)點中添加第一個節(jié)點
            Element book1 = StudentRoot.addElement("student");
            // 向子節(jié)點中添加屬性
            book1.addAttribute("id","1");
            // 向節(jié)點中添加子節(jié)點
            Element name = book1.addElement("name");
            // 向子節(jié)點賦值
            name.setText("小喬");
            Element price = book1.addElement("age");
            price.setText("18");
            // 向根節(jié)點中添加第二個節(jié)點
            Element book2 = StudentRoot.addElement("student");
            book2.addAttribute("id","2").addElement("name").setText("大橋");
            book2.addElement("age").setText("20");

            // 向根節(jié)點中添加第三個節(jié)點
            Element book3 = StudentRoot.addElement("student");
            book3.addAttribute("id","3").addElement("name").setText("孫策");
            book3.addElement("age").setText("21");

            // 設(shè)置生成xml的格式
            OutputFormat of = OutputFormat.createPrettyPrint();
            // 設(shè)置編碼格式
            of.setEncoding("UTF-8");

            // 生成xml文件
            File file = new File("E:\\student.xml");
            if (file.exists()){
                file.delete();
            }
            //創(chuàng)建一個xml文檔編輯器
            XMLWriter writer = new XMLWriter(new FileOutputStream(file), of);
			//把剛剛創(chuàng)建的document放到文檔編輯器中
            writer.write(document);
            writer.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

四、解析xml文件

解析xml的文件就是剛剛導(dǎo)出的那個樣子,我們展示兩種情況,一個是知道屬性名字和子元素名字的我們把解析的xml文件數(shù)據(jù)放到實體類中.不知道的就直接打印到控制臺.

實體類展示

import lombok.Data;

@Data
public class Student {

    private int id;

    private String name;

    private int age;
}

解析xml文件方法

 public static void analysis(){
        // 把要解析的xml變成file文件
        File file = new File("E:\\student.xml");

        // 獲取解析器對象
        SAXReader reader = new SAXReader();
        // 把文件解析成document樹
        Document document = null;
        try {
            document = reader.read(file);
        } catch (DocumentException e) {
            e.printStackTrace();
        }
        // 獲取根節(jié)點
        Element studentRoot = document.getRootElement();
        // 獲取根節(jié)點中所有節(jié)點
        List<Element> elements = studentRoot.elements();

        // 存放xml中節(jié)點的數(shù)據(jù)集合
        List<Student> list = new ArrayList<>();

        // 便利所有節(jié)點
        for (Element child : elements) {

            Student student = new Student();

            //已知屬性名情況下
            student.setId(Integer.parseInt(child.attributeValue("id")));//獲取屬性的數(shù)據(jù)
            //已知子元素名的情況下
            student.setName(child.elementText("name"));//獲取元素中值
            student.setAge(Integer.parseInt(child.elementText("age")));//獲取元素中值

            list.add(student);

            //未知屬性名情況下
            List<Attribute> attributes = child.attributes();
            for (Attribute attribute : attributes) {
                System.out.println(attribute.getName() + "---> " + attribute.getValue());
            }

            //未知子元素名情況下
            List<Element> elementList = child.elements();
            for (Element ele : elementList) {
                System.out.println(ele.getName() + "--->" + ele.getText());
            }
        }
        //把解析xml出來的數(shù)據(jù)集合打印
        list.forEach(x-> System.out.println(x));
    }

解析結(jié)果展示

五、總結(jié)

這樣我們就把DOM4J來生成xml文件和解析xml文件就都操作完成了,有什么問題留言哦!!謝謝大家

到此這篇關(guān)于Java中使用DOM4J生成xml文件并解析xml文件的的文章就介紹到這了,更多相關(guān)java dom4j 解析xml文件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 在非spring環(huán)境中調(diào)用service中的方法

    在非spring環(huán)境中調(diào)用service中的方法

    非Spring環(huán)境指的是不使用Spring框架來管理和配置應(yīng)用程序的運行時環(huán)境,本文將給大家介紹如何在非spring環(huán)境中調(diào)用service中的方法,文中有詳細實現(xiàn)步驟,需要的朋友可以參考下
    2024-03-03
  • Java實現(xiàn)的計時器【秒表】功能示例

    Java實現(xiàn)的計時器【秒表】功能示例

    這篇文章主要介紹了Java實現(xiàn)的計時器【秒表】功能,結(jié)合實例形式分析了Java結(jié)合JFrame框架的計時器功能相關(guān)操作技巧,需要的朋友可以參考下
    2019-02-02
  • 自定義JmsListenerContainerFactory時,containerFactory字段解讀

    自定義JmsListenerContainerFactory時,containerFactory字段解讀

    這篇文章主要介紹了自定義JmsListenerContainerFactory時,containerFactory字段解讀,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • Feign接口方法返回值設(shè)置方式

    Feign接口方法返回值設(shè)置方式

    這篇文章主要介紹了Feign接口方法返回值設(shè)置方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • SpringBoot+MyBatis-Plus實現(xiàn)數(shù)據(jù)庫讀寫分離的代碼示例

    SpringBoot+MyBatis-Plus實現(xiàn)數(shù)據(jù)庫讀寫分離的代碼示例

    在當(dāng)今互聯(lián)網(wǎng)應(yīng)用中,數(shù)據(jù)庫讀寫分離是提高系統(tǒng)性能和穩(wěn)定性的重要手段之一,通過將讀操作和寫操作分別路由到不同的數(shù)據(jù)庫節(jié)點,可以有效減輕數(shù)據(jù)庫服務(wù)器的負擔(dān),本文將介紹如何利用SpringBoot和MyBatis-Plus框架實現(xiàn)數(shù)據(jù)庫讀寫分離,需要的朋友可以參考下
    2023-11-11
  • Java使用正則表達式判斷字符串是否以字符開始

    Java使用正則表達式判斷字符串是否以字符開始

    這篇文章主要介紹了Java使用正則表達式判斷字符串是否以字符開始的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • java基于quasar實現(xiàn)協(xié)程池的方法示例

    java基于quasar實現(xiàn)協(xié)程池的方法示例

    本文主要介紹了java基于quasar實現(xiàn)協(xié)程池的方法示例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧<BR>
    2022-06-06
  • SpringBoot在IDEA中實現(xiàn)熱部署的步驟

    SpringBoot在IDEA中實現(xiàn)熱部署的步驟

    這篇文章主要介紹了SpringBoot在IDEA中實現(xiàn)熱部署的步驟,幫助大家更好的理解和使用springboot框架,感興趣的朋友可以了解下
    2020-11-11
  • java多線程Thread-per-Message模式詳解

    java多線程Thread-per-Message模式詳解

    本篇文章給大家分享java多線程Thread-per-Message模式的相關(guān)知識點,對此有興趣的朋友參考學(xué)習(xí)下。
    2018-05-05
  • Shell腳本管理Java應(yīng)用程序的高效方法

    Shell腳本管理Java應(yīng)用程序的高效方法

    在軟件開發(fā)中,管理和監(jiān)控 Java 應(yīng)用程序的運行狀態(tài)變得愈加重要,本文將分享一個自用的簡單但高效的 Shell 腳本,幫助輕松管理 JAR 包的啟動、停止和日志管理,需要的朋友可以參考下
    2024-09-09

最新評論

锦屏县| 融水| 石楼县| 会理县| 敦煌市| 武城县| 偏关县| 阿巴嘎旗| 丽水市| 泰宁县| 莒南县| 博乐市| 商南县| 名山县| 荆门市| 聂荣县| 南雄市| 洛扎县| 株洲市| 红原县| 邓州市| 兴化市| 城市| 太原市| 平潭县| 达州市| 洮南市| 金坛市| 泾川县| 铅山县| 女性| 灌阳县| 平度市| 张家口市| 晋宁县| 临沂市| 宜君县| 杭州市| 凌云县| 共和县| 河南省|