XML數據格式

Module 2: Java Nkyem
等級 16 , 課堂 2
開放

為什麼需要文本格式?

文本格式便於存儲信息,因為它們可以由程序和人類創建和處理。

文本文件(文本格式的文件)可以在各種文本編輯器中打開、閱讀和編輯。

許多程序使用基於文本的配置文件,即使格式包含數字和二進制(是/否)值。

由於需要從文本格式轉換為內部格式,反之亦然,這使得程序稍微複雜一些,但它可以在不使用程序本身的配置工具的情況下手動編輯配置。

現在在哪裡使用 XML?

XML 用於 IT 的各個領域。它可以是配置文件(帶有程序設置)或用於在程序之間傳輸數據的文件。在 Java 中,最常見的用例之一是配置 Maven,一種構建自動化工具。

XML 文檔的結構

XML 文檔的物理和邏輯結構是分開的。就物理結構而言,文檔由可以引用其他實體的實體組成。

唯一的根元素是文檔實體。實體是文檔中最小的部分。所有實體都有一個名稱並包含字符。

反過來,字符屬於兩個類別之一:字符數據或標記。

標記包括:

  • 標記,表示元素邊界;
  • 聲明和處理指令,包括它們的屬性;
  • 實體引用;
  • 評論;
  • 字符序列包裝 CDATA 部分。

從邏輯上講,文檔由元素、註釋、聲明、實體引用和處理指令組成。標記用於在文檔中創建所有這些結構。

文檔的所有組成部分都分為序言和根元素。根元素是 XML 文檔的強制性基本部分,而序言可能根本不存在。根元素可以由嵌套元素、字符數據和註釋組成。文檔的元素必須正確嵌套:任何在另一個元素內開始的元素也必須在該元素內結束。

標記符號

標記總是以<開頭並以>結尾。

<和>(尖括號)和& (與)符號起著特殊的作用。尖括號表示元素、處理指令和一些其他序列的邊界。符號幫助我們用實體替換文本。

聲明

XML 聲明指定用於編寫文檔的語言版本。XML 規範要求以 XML 聲明開始文檔,因為文檔內容的正確解釋取決於語言的版本。

在該語言的第一個版本 (1.0) 中,此聲明是可選的,但在以後的版本中是強制性的。假定缺少聲明表示版本 1.0。聲明還可能包含有關文檔編碼的信息。

例子:

<?XML version="1.1" encoding="UTF-8" ?>

標籤

標籤是包含元素名稱的標記結構。有開始標籤和結束標籤。還有結合開始和結束元素的空元素標籤。

例子:

  • 開始標籤:<tag1>

  • 結束標籤:</tag1>

  • 空元素標籤:<empty_tag1 />

屬性

XML 元素的另一部分是屬性。一個元素可以有多個唯一的屬性。屬性讓我們指定有關元素的更多信息。或者更準確地說,屬性定義了元素的特性。

屬性始終是名稱-值對:

名稱 = "值"

標籤中的屬性示例:

<tag1 name = "value">元素</tag1>

屬性的值必須用雙引號 ( " ) 或單引號 ( ' ) 括起來。屬性僅用於開始標記和空元素標記。

轉義五個特殊字符(<、>、'、"、&)

顯然,不能在字符數據和屬性值中使用<>&符號。您需要特殊的轉義序列來表示它們。在屬性值中寫入撇號和引號時也使用特殊序列:

象徵 替代品
< <
> >
& &
'

此外,要編寫\字符,您需要使用\\

CDATA 部分

CDATA 部分不是文本的邏輯單元。這種類型的部分可以出現在 XML 語法允許我們在文檔中放置字符數據的地方。

該部分以<![CDATA[開始並以]]>結束。字符數據放置在這些標記位之間,並且可以直接使用<>&符號。

評論

註釋不被視為字符數據。註釋以<!--開頭,以-->結尾。字符序列--不能在註釋中使用。此外,在註釋中,與號字符不表示標記。

例子:

<!-- 這是評論 -->

名稱

在 XML 中,所有名稱只能包含 Unicode 字符表中的字母、阿拉伯數字、句點、冒號、連字符和下劃線。名稱可以以字母、冒號或下劃線開頭。請注意,名稱不能以字符串XML開頭。

例子

讓我們看一下 Java 類和該類的對象。然後我們將嘗試序列化 XML 格式的對象。班級代碼:


public class Book {
   private String title;
   private String author;
   private Integer pageCount;
   private List<String> chapters;

   public Book(String title, String author, Integer pageCount, List<String> chapters) {
       this.title = title;
       this.author = author;
       this.pageCount = pageCount;
       this.chapters = chapters;
   }
// Getters/setters
}

和創建對象:


Book book = new Book("My Favorite Book", "Amigo", 999, Arrays.asList("Chapter 1", "Chapter 2", "Chapter 3", "Chapter 4", "Chapter 5", "Chapter 6"));

下面是一個包含 4 個字段的 Java 對象的有效 XML 表示的示例,其中一個是一個集合(參見上面的 Java 代碼):

<Book>
  <title>我最喜歡的書</title>
  <author>Amigo</author>
  <pageCount>999</pageCount>
 <chapters>
    <chapters>第一章</chapters>
    <chapters>第二章</chapters>
    <chapters>第3章</chapters>
    <chapters>第4章</chapters>
    <chapters>第5章</chapters>
    <chapters>第6章</chapters>
 </chapters>
</Book>

XML模式

XML 模式是對 XML 文檔結構的描述。相應的規範(XML Schema Definition,或 XSD)是 W3C 的推薦標準。

XSD 旨在表達 XML 文檔必須遵循的規則。但對我們來說最有趣的是 XSD 被設計用於開發處理 XML 文檔的軟件。它讓我們以編程方式檢查 XML 文檔的正確性。

包含 XML 架構的文件具有 .xsd 擴展名。設計 XML 模式超出了本課的範圍,所以現在只需要知道這種可能性是存在的。

留言
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION