JavaWeb開發(六)XML介紹

1. XML介紹

1.1. 什么是XML

??(1)XML 指可擴展標記語言(EXtensible Markup Language)XML 是一種很像HTML的標記語言。
??(2)XML 的設計宗旨是傳輸數據(目前主要是作為配置文件),而不是顯示數據。
??(3)XML 標簽沒有被預定義。您需要自行定義標簽。
??(4)XML 被設計為具有自我描述性。
??(5)XML是W3C的推薦標準。
??可在不同的平臺中使用,比如javaphp都可以使用xml作為文件配置和數據傳輸的工具。

1.2. 常見應用場景

??XML 應用于 Web 開發的許多方面,常用于簡化數據的存儲和共享。
??(1)存儲數據,配置相關信息(目前主要應用范圍)。
在這里插入圖片描述
??(2)傳輸數據的載體(現在很少使用,基本使用json傳輸數據。

1.3. XML的結構

??XML是一種樹狀結構
??XML 文檔必須包含根元素。該元素是所有其他元素的父元素。XML 文檔中的元素形成了一棵文檔樹。這棵樹從根部開始,并擴展到樹的最底端。

<root>
<child>
<subchild>.....</subchild>
</child>
</root>

1.4. XML語法

??(1)所有XML元素都須有關閉標簽(在HTL,經常會看到沒有關書標簽的元素)
??(2)XML, 標簽對大小寫敏感,這是錯誤的</message)
??(3)XML文檔必須有根元素
??(4)XML的屬性值須加引號<note date=”12/11/2007">
??(5)XML中的注釋<!–This isacomment –
??(在XML中編寫注釋的語法與 HTML的語法很相似)

1.5. XML元素

1.5.1. 什么是XML元素

??XML 元素指的是從(且包括)開始標簽直到(且包括)結束標簽的部分。
??一個元素可以包含:
??(1)其他元素
??(2)文本
??(3)屬性

1.5.2. XML命名規則

??XML 元素必須遵循以下命名規則;
??(1)名稱可以包含字母、數字以及其他的字符;
??(2)名稱不能以數字或者標點符號開始;
??(3)名稱不能以字母xml(或者XML、Xml 等等)開始;
??(4)名稱不能包含空格。

1.6. XML屬性

1.6.1. 什么是XML屬性

??XML元素具有屬性,類似HTML。
??屬性(Attribute)提供有關元素的額外信息。

1.6.2. 屬性使用規范

??XML,屬性必須加引號。
??且不建議是用屬性,因為元素基本可以完成屬性的功能,且更易讀。

1.7. XML解析

1.7.1. XML解析概述

??當我們將數據存儲在xm1文件之后,我們希望通過程序去讀取xm1的內容,通過java基礎的I0也是可以讀取的,但是十分的麻煩。因此出現了一些解析的方式。
??常見的有:DOM解析,SAX解析。
??由于目前xml很少作為傳輸數據的方式,所以解析相關的方法用的也很少,作為了解內容。

1.7.2. 解析方式

??(1)DOM解析:將整個xm1文件加載到內存中,并解析成一個Docunment對象。
??優點:無素與元素之間保留了層級結構關系,可以進行增刪改查。
??缺點:xml文件過大時,可能產生內存溢出問題。
??(2)SAX解析:速度更快,更有效的方式。它會逐行掃描文檔,在掃描的同時進行解析。
??優點:速度更快,可處理大的文件。
??缺點:只能讀取,無法修改,讀取后將釋放資源。

1.8 .XML約束

1.8.1. 什么是DTD

??DTD:文檔類型定義,用來約束XML文件,規定文檔中元素名稱,子元素的名稱及順序,元素的屬性等。
??我們并不要求學會編寫DTD約束文檔,能夠看懂即可。

1.8.2. Schema

1.8.2.1. 什么是Schema

??Schema是XML文檔約束,它是DTD約束的替代品,相較于DTD更強大擴展名市xsd,通過命名空間引入使用。

1.8.2.2. 命名空間

??如果一個文檔中有多個Schema文件,而些文件如果定義了相同的名稱的元素,就會出現名字沖突。這就類似于java中如果沒有包名,那么class文件就很容易沖突是一樣的道理。
??引入方式:

默認隱式:xmins="http://xmns.jcp.org/xm1/ns/javaee"
顯式方式:xmIns:xsd="http://xmlns.jcp.org/xml/ns/javaee"

在這里插入圖片描述

1.8.2.3. 使用Schema

??(1)將約東文件copy到對應工程中。
??(2)打開Schema約束copy命名空間。
??(3)編寫xm1文件。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/65159.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/65159.shtml
英文地址,請注明出處:http://en.pswp.cn/web/65159.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

用shell把(1到100)100個整數寫入到二進制文件

author: hjjdebug date: 2025年 01月 05日 星期日 16:14:41 CST description: 用shell把(1到100)100個整數寫入到二進制文件 1. 問題分析(需求分析) 在c語言下, 整數int 是按4個字節存儲的,能表示最大0xffffffff的范圍 但shell并沒有一條命令能夠實現把一個整數寫入二進制文件…

SpringBoot下載文件的幾種方式

小文件&#xff1a;直接將文件一次性讀取到內存中&#xff0c;文件大可能會導致OOM GetMapping("/download1")public void download1(HttpServletResponse response) throws IOException {// 指定要下載的文件File file new File("C:\\Users\\syd\\Desktop\\do…

Flink使用

Window下啟動支持 下載或復制老版本的放在bin目錄下即可&#xff1b; flink.bat echo off setlocalSET bin%~dp0 SET FLINK_HOME%bin%.. SET FLINK_LIB_DIR%FLINK_HOME%\lib SET FLINK_PLUGINS_DIR%FLINK_HOME%\pluginsSET JVM_ARGS-Xmx512mSET FLINK_JM_CLASSPATH%FLINK_LI…

Python基礎知識回顧-數據結構

Tuple 在 Python 中&#xff0c;我們經常使用 Tuple 來將相關數據分組。Tuple 指的是有序且不可變的元素集合。 形式&#xff1a;通常以逗號分隔的元素寫在括號"() "中。 數據類型和索引&#xff1a;包含 String、整數和浮點數&#xff0c;并使用正索引和負索引訪問…

8. C++ 面向對象之特性一(封裝)

面向對象主要包括三大類&#xff1a;封裝&#xff0c;繼承&#xff0c;多態 1.類和對象 c認為&#xff0c;萬物皆為對象&#xff0c;對象上有其屬性和行為 人可以作為對象&#xff0c;屬性有姓名、年齡、身高、體重...&#xff0c;行為有走、跑、跳、吃飯、唱歌... 車也可以作…

WebRtc02:WebRtc架構、目錄結構、運行機制

整體架構 WebRtc主要分為三層&#xff1a; CAPI層&#xff1a;外層調用Session管理核心層&#xff1a;包括視頻引擎、音頻引擎、網絡傳輸 可由使用者重寫視頻引擎&#xff1a;編解碼器、視頻緩存、視頻增強音頻引擎&#xff1a;編解碼器、音頻緩存、回音消除、降噪傳輸&#x…

【Qt】快速添加對應類所需的頭文件包含

快速添加對應類所需的頭文件包含 一&#xff0c;簡介二&#xff0c;操作步驟 一&#xff0c;簡介 本文介紹一下&#xff0c;如何快速添加對應類所需要包含的頭文件&#xff0c;可以提高開發效率&#xff0c;供參考。 二&#xff0c;操作步驟 以QTime類為例&#xff1a; 選中…

Apache MINA 反序列化漏洞CVE-2024-52046

漏洞描述&#xff1a; Apache MINA 是一個功能強大、靈活且高性能的網絡應用框架。它通過抽象網絡層的復雜性&#xff0c;提供了事件驅動架構和靈活的 Filter 鏈機制&#xff0c;使得開發者可以更容易地開發各種類型的網絡應用。 Apache MINA 框架的 ObjectSerializationDeco…

服務器docker配置過程

1.docker安裝 參考官方文檔&#xff1a;https://docker.cadn.net.cn/manuals/engine_install_ubuntu 2.docker鏡像源替換 官方文檔&#xff1a;https://cloud.tencent.com/document/product/1207/45596 鏡像源根據你租了哪家的去找官方文檔即可。

RabbitMQ通過代碼創建交換機和隊列

常見交換機 RabbitMQ提供的交換機一共的四種&#xff0c;分別是&#xff1a; 1. Fanout&#xff1a;采用廣播形式來發送消息&#xff0c;會將消息路由到所有綁定了的隊列之中。 2. Direct&#xff1a;通過Binding Key與隊列綁定&#xff0c;生產者在發送信息的時候會通過Routin…

js es6 reduce函數, 通過規格生成sku

const specs [{ name: 顏色, values: [紅色, 藍色, 綠色] },{ name: 尺寸, values: [S, M, L] } ];function generateSKUs(specs) {return specs.reduce((acc, spec) > {const newAcc [];for (const combination of acc) {for (const value of spec.values) {newAcc.push(…

WPF通過反射機制動態加載控件

Activator.CreateInstance 是 .NET 提供的一個靜態方法&#xff0c;它屬于 System 命名空間。此方法通過反射機制根據提供的類型信息。 寫一個小demo演示一下 要求&#xff1a;在用戶反饋界面點擊建議或者評分按鈕 彈出相應界面 編寫MainWindow.xmal 主窗體 <Window x:C…

寬帶、光貓、路由器、WiFi、光纖之間的關系

1、寬帶&#xff08;Broadband&#xff09; 1.1 寬帶的定義寬帶指的是一種高速互聯網接入技術&#xff0c;通常包括ADSL、光纖、4G/5G等不同類型的接入方式。寬帶的關鍵特點是能夠提供較高的數據傳輸速率&#xff0c;使得用戶可以享受到穩定的上網體驗。 1.2 寬帶的作用寬帶是…

Pytest鉤子函數,測試框架動態切換測試環境

在軟件測試中&#xff0c;測試環境的切換是個令人頭疼的問題。不同環境的配置不同&#xff0c;如何高效切換測試環境成為許多測試開發人員關注的重點。你是否希望在運行測試用例時&#xff0c;能夠動態選擇測試環境&#xff0c;而不是繁瑣地手動修改配置&#xff1f; Pytest 測…

印象筆記07——試一試PDF標注

印象筆記07——試一試PDF標注 [!CAUTION] 根據第六期&#xff0c;我再次查詢了資料&#xff0c;印象筆記還是有一些可圈可點的功能的&#xff08;當然部分有平替&#xff09;&#xff0c;針對會員作用&#xff0c;開發使用場景雖然是逆向的&#xff0c;但我堅信這是一部分人的現…

【Vue】分享一個快速入門的前端框架以及如何搭建

先上效果圖: 登錄 菜單: 下載地址: 鏈接&#xff1a;https://pan.baidu.com/s/1m-ZlBARWU6_2n8jZil_RAQ 提取碼&#xff1a;ui20 … 主要是可以自定義設置token,更改后端請求地址較為方便。 應用設置: 登錄與token設置: 在這里設置不用登錄,可以請求的接口: request.js i…

通過串口通信控制led燈的亮滅

初始化led燈的gpio接口控制燈的亮滅 初始化uart1串口 將gpio9和gpio10設置為復用模式進行串口通信 通過串口的輸入輸出函數實現串口通信控制led燈的亮滅

計算機xinput1_4.dll丟失怎么修復?

電腦運行時常見問題及修復指南 作為軟件開發從業者&#xff0c;深知電腦在日常使用中難免會遇到各種問題&#xff0c;如文件丟失、文件損壞和系統報錯等。這些問題不僅影響工作效率&#xff0c;還可能帶來數據丟失的風險。本文將詳細介紹一些常見問題及其解決辦法&#xff0c;…

DeepSeek V3“報錯家門”:我是ChatGPT

搜 &#xff1a;海訊無雙Ai 要說這兩天大模型圈的頂流話題&#xff0c;那絕對是非DeepSeek V3莫屬了。 不過在網友們紛紛測試之際&#xff0c;有個bug也成了熱議的焦點—— 只是少了一個問號&#xff0c;DeepSeek V3竟然稱自己是ChatGPT。 甚至讓它講個笑話&#xff0c;生成…

C++:范圍for

范圍for&#xff08;range-based for&#xff09;是C的一種循環結構&#xff0c; 是在 C11 這個標準中引入的&#xff0c;這種類型的for循環使得遍歷數組、容器中的元素更加簡便和直觀。 一、范圍for語法 for ( 類型 變量名 : 數組名 ) 語句 //多條語句需要加?括號 示例&#…