Java Web(3)-XML

来源:https://www.cnblogs.com/mengd/archive/2020/07/25/13378314.html
-Advertisement-
Play Games

一、XML簡介 1. 什麼是xml? xml 是可擴展的標記性語言 2. xml的作用? 用來保存數據,而且這些數據具有自我描述性 它還可以做為項目或者模塊的配置文件 還可以做為網路傳輸數據的格式(現在 JSON 為主) 二、XML語法 首先創建一個xml文件 <?xml version="1.0" ...


一、XML簡介

1. 什麼是xml?

xml 是可擴展的標記性語言

2. xml的作用?

  • 用來保存數據,而且這些數據具有自我描述性
  • 它還可以做為項目或者模塊的配置文件
  • 還可以做為網路傳輸數據的格式(現在 JSON 為主)

二、XML語法

首先創建一個xml文件

<?xml version="1.0" encoding="UTF-8" ?>
<!--
    文件的聲明
    version="1.0"        表示xml的版本
    encoding="UTF-8"     表示xml文件本身的編碼
-->

圖書有 標識,書名,有作者,價格的信息

<?xml version="1.0" encoding="UTF-8" ?>
<!--
    文件的聲明
    version="1.0"        表示xml的版本
    encoding="UTF-8"     表示xml文件本身的編碼
-->

<!-- 多個圖書信息-->
<books>

    <!--一個圖書的基本信息-->
    <book sn="SN123454321">    <!--屬性值-->
        <name>雍正王朝</name>
        <author>二月河</author>
        <price>99</price>
    </book>

    <book sn="SN987654321">
        <name>康熙大帝</name>
        <author>二月河</author>
        <price>99</price>
    </book>
</books>
  • 註釋和html一樣
  • 其他的基本上看看就懂了

註意:

  • XML 文檔必須有根元素,並且是唯一的,就如上面的books一樣,

三、XML解析

這裡主要就使用dom4j技術來解析

首先需要到官網找到這個jar包,直接複製到當前的模塊下即可

1. Dom4j編程步驟

  • 先載入 xml 文件創建 Document 對象
  • 通過 Document 對象拿到根元素對象
  • 通過根元素.elelemts(標簽名); 可以返回一個集合,這個集合里放著。所有你指定的標簽名的元素對象
  • 找到你想要修改、刪除的子元素,進行相應在的操作
  • 保存到硬碟上或者其他地方

2. 獲取document對象

1. 首先創建一個lib包,直接把網上找到的dom4j的jar包複製到lib下,然後

2. 寫一個需要解析的books.xml文件

<?xml version="1.0" encoding="UTF-8" ?>

<books>
    <book sn="SN123454321">
        <name>雍正王朝</name>
        <author>二月河</author>
        <price>99</price>
    </book>

    <book sn="SN987654321">
        <name>康熙大帝</name>
        <author>二月河</author>
        <price>99</price>
    </book>
</books>

3. 獲取Document對象的代碼

@Test
    public void test1() throws DocumentException {

        // 1. 先創建一個SAXReader對象
        SAXReader saxReader = new SAXReader();
		// 2. 這個對象用來讀取xml文件,返回一個document
        Document read = saxReader.read("src/books.xml");
		// 3. 列印到控制台,查看是否成功
        System.out.println(read);

    }

3. 遍歷標簽獲取內容

需要分四步操作:

  • 通過創建 SAXReader 對象。來讀取 xml 文件,獲取 Document 對象
  • 通過 Document 對象。拿到 XML 的根元素對象
  • 通過根元素對象。獲取所有的 book 標簽對象
  • 遍歷每個 book 標簽對象。然後獲取到 book 標簽對象內的每一個元素,再通過 getText() 方法拿到起始標簽和結 束標簽之間的文本內容

首先寫一個Book類,用於存放數據

package com.md.java;
/**
 * @author MD
 * @create 2020-07-24 8:45
 */
public class Book {
    private String sn;
    private String name;
    private String author;
    private Double price;

    public Book() {
    }

    public Book(String sn, String name, String author, Double price) {
        this.sn = sn;
        this.name = name;
        this.author = author;
        this.price = price;
    }

    public String getSn() {
        return sn;
    }

    public void setSn(String sn) {
        this.sn = sn;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getAuthor() {
        return author;
    }

    public void setAuthor(String author) {
        this.author = author;
    }

    public Double getPrice() {
        return price;
    }

    public void setPrice(Double price) {
        this.price = price;
    }

    @Override
    public String toString() {
        return "Book{" +
                "sn='" + sn + '\'' +
                ", name='" + name + '\'' +
                ", author='" + author + '\'' +
                ", price=" + price +
                '}';
    }
}

讀取xml文件中的內容,xml文件就是上面的books.xml

    /**
     * 讀取books.xml文件生成的Book類
     */
    @Test
    public void test2() throws DocumentException {
        // 1. 讀取文件,在Junit測試中,相對路徑是從模塊名開始的
        SAXReader saxReader = new SAXReader();
        Document document = saxReader.read("src/books.xml");

        // 2. 通過Document對象獲取根元素
        Element rootElement = document.getRootElement();
        //System.out.println(rootElement);

        // 3. 通過根元素讀取book標簽對象
        // element()和elements()都是通過標簽名查找子元素
        List<Element> books = rootElement.elements("book");

        // 4. 遍歷處理book標簽轉換為Book類
        for (Element book:books){
            // asXML()把標簽對象轉換為標簽字元串
            // System.out.println(book.asXML());

            // 5. 獲取到了這個標簽
            Element nameElement = book.element("name");
            // 獲取這個標簽的文本內容
            String name = nameElement.getText();

            // 或者可以直接獲取標簽里的文本內容
            String price = book.elementText("price");
            String author = book.elementText("author");

            // 獲取屬性值
            String sn = book.attributeValue("sn");


            // 獲取完成之後就可以生成了,註意價格是double類型的
            System.out.println(new Book(sn,name,author,Double.parseDouble(price)));

        }

    }

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 快手,快影的App保護用的是同一套代碼,反調試也很容易,下麵請看過程。 >作為一個開發者,有一個學習的氛圍跟一個交流圈子特別重要,這是一個我的iOS交流群:761407670 進群密碼‘博客’,不管你是小白還是大牛歡迎入駐 ,分享BAT,阿裡面試題、面試經驗,討論技術, 大家一起交流學習成長! 1. ...
  • 《全棧工程師 Web 開髮指南》 [作者] (意) Dino Esposito[譯者] (中) 李永倫[出版] 人民郵電出版社[版次] 2019年03月 第1版[印次] 2019年03月 第1次 印刷[定價] 79.00元 【第02章】 【選擇支撐架構】 (P018) 領域模型模式的要點是構建一個完 ...
  • Nginx基本安全優化 隱藏Nginx軟體版本號信息 一般來說,軟體的漏洞都和版本有關,這個很像汽車的缺陷,同一批次的要有問題就都有問題,別的批次可能就都是好的。因此,我們應儘量隱藏或者消除Web服務對訪問用戶顯示各類敏感信息(例如Web軟體名稱以及版本號等信息),增加惡意用戶攻擊伺服器的難度,從而 ...
  • 前言 本篇文章收錄於專輯:http://dwz.win/HjK,點擊解鎖更多數據結構與演算法的知識。 你好,我是彤哥,一個每天爬二十六層樓還不忘讀源碼的硬核男人。 上一節,我們一起學習了表示覆雜度的幾個符號,我們說,通常使用大O來表示演算法的複雜度,不僅合理,而且書寫方便。 那麼,使用大O表示法評估演算法 ...
  • data ={ '魏X':{"語文":["150"], "數學":["150"], "英語":["150"], "綜合":{ '化學':["90"], '物理':["90"], }, }, '黃XX':{"語文":["150"], "數學":["150"], "英語 ...
  • ###Windows安裝boost庫 下載鏈接:https://www.boost.org/ 學習鏈接:https://theboostcpplibraries.com/ ######1,下載解壓,我的目錄“C:\Program Files (x86)\Microsoft Visual Studio ...
  • 先上代碼, class C1(object): class_variable = 1 class C2(object): class_variable = [] object1 = C1() object2 = C2() print(C1.class_variable) # 1 print(obje ...
  • 有一段時間沒有更新文章了,因為最近參加了公司一個項目開發,要求用java寫,這樣才方便引用公司其它團隊現成的技術組件。 由於以前沒學過java,所以最近一段時間花了不少時間學java開發知識 中間遇上不少小問題,一路跌跌撞撞過來,上周終於用java寫好了一個小模塊。 由於剛接觸一塊新事務,工作比較忙 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...