一、XML 概述
XML(可擴展標記語言)是一種用于描述數據的標記語言,旨在提供一種通用的方式來傳輸和存儲數據,特別是 Web 應用程序中經常使用的數據。XML 并不預定義標記。因此,XML 更加靈活,并且可以適用于廣泛的應用領域。
XML 文檔由元素(element)、屬性(attribute)和內容(content)組成。
? ● 元素指的是標記對,包含文本、屬性或其他元素。
? ● 屬性提供了有關元素的其他信息。
? ● 內容則是元素包含的數據或子元素。
XML 還可以通過使用 XML Schema 或 DTD(文檔類型定義)來定義文檔結構。這些機制允許開發人員創建自定義規則以驗證 XML 文檔是否符合其預期的格式。
XML 還支持命名空間、實體引用、注釋、處理指令等特性,使其能夠靈活地適應各種數據需求。
語言基礎類庫提供了 XML 相關的基礎能力,包括:XML 的生成、XML 的解析和 XML 的轉換。
XML 可以作為數據交換格式,被各種系統和應用程序所支持。例如 Web 服務,可以將結構化數據以 XML 格式進行傳遞。
XML 還可以作為消息傳遞格式,在分布式系統中用于不同節點之間的通信與交互。
二、XML 生成
注意事項
? ● XML 標簽必須成對出現,生成開始標簽就要生成結束標簽。
? ● XML 標簽對大小寫敏感,開始標簽與結束標簽大小寫要一致。
開發步驟
XML 模塊提供 XmlSerializer 類來生成 XML 文件,輸入為固定長度的 Arraybuffer 或 DataView 對象,該對象用于存放輸出的 XML 數據。
通過調用不同的方法來寫入不同的內容,如 startElement (name: string) 寫入元素開始標記,setText (text: string) 寫入標簽值。
XML 模塊的 API 接口可以參考 @ohos.xml 的詳細描述,按需求調用對應函數可以生成一份完整的 XML 文件。
? 1. 引入模塊。
import xml from '@ohos.xml'; import util from '@ohos.util';
? 2. 創建緩沖區,構造 XmlSerializer 對象(可以基于 Arraybuffer 構造 XmlSerializer 對象, 也可以基于 DataView 構造 XmlSerializer 對象)。
// 1.基于Arraybuffer構造XmlSerializer對象 let arrayBuffer = new ArrayBuffer(2048); // 創建一個2048字節的緩沖區 let thatSer = new xml.XmlSerializer(arrayBuffer); // 基于Arraybuffer構造XmlSerializer對象 // 2.基于DataView構造XmlSerializer對象 let arrayBuffer = new ArrayBuffer(2048); // 創建一個2048字節的緩沖區 let dataView = new DataView(arrayBuffer); // 使用DataView對象操作ArrayBuffer對象 let thatSer = new xml.XmlSerializer(dataView); // 基于DataView構造XmlSerializer對象
? 3. 調用 XML 元素生成函數。
thatSer.setDeclaration(); // 寫入xml的聲明 thatSer.startElement('bookstore'); // 寫入元素開始標記 thatSer.startElement('book'); // 嵌套元素開始標記 thatSer.setAttributes('category', 'COOKING'); // 寫入屬性及屬性值 thatSer.startElement('title'); thatSer.setAttributes('lang', 'en'); thatSer.setText('Everyday'); // 寫入標簽值 thatSer.endElement(); // 寫入結束標記 thatSer.startElement('author'); thatSer.setText('Giada'); thatSer.endElement(); thatSer.startElement('year'); thatSer.setText('2005'); thatSer.endElement(); thatSer.endElement(); thatSer.endElement();
? 4. 使用 Uint8Array 操作 Arraybuffer,調用 TextDecoder 對 Uint8Array 解碼后輸出。
let view = new Uint8Array(arrayBuffer); // 使用Uint8Array讀取arrayBuffer的數據 let textDecoder = util.TextDecoder.create(); // 調用util模塊的TextDecoder類 let res = textDecoder.decodeWithStream(view); // 對view解碼 console.info(res);
輸出結果如下:
?xml version="1.0" encoding="utf-8"??>rn rn Everyday/title?>rn Giada/author?>rn 2005/year?>rn /book?>rn/bookstore?>
審核編輯 黃宇
-
XML
+關注
關注
0文章
188瀏覽量
33078 -
HarmonyOS
+關注
關注
79文章
1973瀏覽量
30145
發布評論請先 登錄
相關推薦
評論