一、XML概述 XML(可擴展標記語言)是一種用於描述數據的標記語言,旨在提供一種通用的方式來傳輸和存儲數據,特別是Web應用程式中經常使用的數據。XML並不預定義標記。因此,XML更加靈活,並且可以適用於廣泛的應用領域。 XML文檔由元素(element)、屬性(attribute)和內容(con ...
一、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\"?><bookstore>\r\n <book category=\"COOKING\">\r\n <title lang=\"en\">Everyday</title>\r\n <author>Giada</author>\r\n <year>2005</year>\r\n </book>\r\n</bookstore>
本文由博客一文多發平臺 OpenWrite 發佈!