0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

XML 在 HarmonyOS 中的生成,解析與轉(zhuǎn)換(上)

王程 ? 來源:jf_75796907 ? 作者:jf_75796907 ? 2024-02-18 09:35 ? 次閱讀

一、XML 概述

XML(可擴(kuò)展標(biāo)記語(yǔ)言)是一種用于描述數(shù)據(jù)的標(biāo)記語(yǔ)言,旨在提供一種通用的方式來傳輸和存儲(chǔ)數(shù)據(jù),特別是 Web 應(yīng)用程序中經(jīng)常使用的數(shù)據(jù)。XML 并不預(yù)定義標(biāo)記。因此,XML 更加靈活,并且可以適用于廣泛的應(yīng)用領(lǐng)域。

XML 文檔由元素(element)、屬性(attribute)和內(nèi)容(content)組成。

? ● 元素指的是標(biāo)記對(duì),包含文本、屬性或其他元素。

? ● 屬性提供了有關(guān)元素的其他信息。

? ● 內(nèi)容則是元素包含的數(shù)據(jù)或子元素。

XML 還可以通過使用 XML Schema 或 DTD(文檔類型定義)來定義文檔結(jié)構(gòu)。這些機(jī)制允許開發(fā)人員創(chuàng)建自定義規(guī)則以驗(yàn)證 XML 文檔是否符合其預(yù)期的格式。

XML 還支持命名空間、實(shí)體引用、注釋、處理指令等特性,使其能夠靈活地適應(yīng)各種數(shù)據(jù)需求。

語(yǔ)言基礎(chǔ)類庫(kù)提供了 XML 相關(guān)的基礎(chǔ)能力,包括:XML 的生成、XML 的解析和 XML 的轉(zhuǎn)換。

XML 可以作為數(shù)據(jù)交換格式,被各種系統(tǒng)和應(yīng)用程序所支持。例如 Web 服務(wù),可以將結(jié)構(gòu)化數(shù)據(jù)以 XML 格式進(jìn)行傳遞。

XML 還可以作為消息傳遞格式,在分布式系統(tǒng)中用于不同節(jié)點(diǎn)之間的通信與交互。

二、XML 生成

注意事項(xiàng)

? ● XML 標(biāo)簽必須成對(duì)出現(xiàn),生成開始標(biāo)簽就要生成結(jié)束標(biāo)簽。

? ● XML 標(biāo)簽對(duì)大小寫敏感,開始標(biāo)簽與結(jié)束標(biāo)簽大小寫要一致。

開發(fā)步驟

XML 模塊提供 XmlSerializer 類來生成 XML 文件,輸入為固定長(zhǎng)度的 Arraybuffer 或 DataView 對(duì)象,該對(duì)象用于存放輸出的 XML 數(shù)據(jù)。

通過調(diào)用不同的方法來寫入不同的內(nèi)容,如 startElement (name: string) 寫入元素開始標(biāo)記,setText (text: string) 寫入標(biāo)簽值。

XML 模塊的 API 接口可以參考 @ohos.xml 的詳細(xì)描述,按需求調(diào)用對(duì)應(yīng)函數(shù)可以生成一份完整的 XML 文件。

? 1. 引入模塊。

import xml from '@ohos.xml'; 
import util from '@ohos.util';

? 2. 創(chuàng)建緩沖區(qū),構(gòu)造 XmlSerializer 對(duì)象(可以基于 Arraybuffer 構(gòu)造 XmlSerializer 對(duì)象, 也可以基于 DataView 構(gòu)造 XmlSerializer 對(duì)象)。

// 1.基于Arraybuffer構(gòu)造XmlSerializer對(duì)象
let arrayBuffer = new ArrayBuffer(2048); // 創(chuàng)建一個(gè)2048字節(jié)的緩沖區(qū)
let thatSer = new xml.XmlSerializer(arrayBuffer); // 基于Arraybuffer構(gòu)造XmlSerializer對(duì)象

// 2.基于DataView構(gòu)造XmlSerializer對(duì)象
let arrayBuffer = new ArrayBuffer(2048); // 創(chuàng)建一個(gè)2048字節(jié)的緩沖區(qū)
let dataView = new DataView(arrayBuffer); // 使用DataView對(duì)象操作ArrayBuffer對(duì)象
let thatSer = new xml.XmlSerializer(dataView); // 基于DataView構(gòu)造XmlSerializer對(duì)象

? 3. 調(diào)用 XML 元素生成函數(shù)。

thatSer.setDeclaration(); // 寫入xml的聲明
thatSer.startElement('bookstore'); // 寫入元素開始標(biāo)記
thatSer.startElement('book'); // 嵌套元素開始標(biāo)記
thatSer.setAttributes('category', 'COOKING'); // 寫入屬性及屬性值
thatSer.startElement('title');
thatSer.setAttributes('lang', 'en');
thatSer.setText('Everyday'); // 寫入標(biāo)簽值
thatSer.endElement(); // 寫入結(jié)束標(biāo)記
thatSer.startElement('author');
thatSer.setText('Giada');
thatSer.endElement();
thatSer.startElement('year');
thatSer.setText('2005');
thatSer.endElement();
thatSer.endElement();
thatSer.endElement();

? 4. 使用 Uint8Array 操作 Arraybuffer,調(diào)用 TextDecoder 對(duì) Uint8Array 解碼后輸出。

let view = new Uint8Array(arrayBuffer); // 使用Uint8Array讀取arrayBuffer的數(shù)據(jù)
let textDecoder = util.TextDecoder.create(); // 調(diào)用util模塊的TextDecoder類
let res = textDecoder.decodeWithStream(view); // 對(duì)view解碼
console.info(res);

輸出結(jié)果如下:

rn  rn    Everydayrn    Giadarn    2005rn  rn


審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • XML
    XML
    +關(guān)注

    關(guān)注

    0

    文章

    186

    瀏覽量

    32993
  • HarmonyOS
    +關(guān)注

    關(guān)注

    79

    文章

    1946

    瀏覽量

    29739
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    XMLHarmonyOS生成解析轉(zhuǎn)換(下)

    一、XML 解析 對(duì)于以 XML 作為載體傳遞的數(shù)據(jù),實(shí)際使用需要對(duì)相關(guān)的節(jié)點(diǎn)進(jìn)行解析,一般包括解析
    的頭像 發(fā)表于 02-18 10:07 ?609次閱讀

    OpenHarmony語(yǔ)言基礎(chǔ)類庫(kù)【@ohos.xml (xml解析生成)】

    XML文本轉(zhuǎn)換為JavaScript對(duì)象、以及XML文件生成解析的一系列接口。
    的頭像 發(fā)表于 05-08 17:05 ?662次閱讀

    ArkTS語(yǔ)言基礎(chǔ)類庫(kù)-解析

    被設(shè)計(jì)用來傳輸和存儲(chǔ)數(shù)據(jù),是一種可擴(kuò)展標(biāo)記語(yǔ)言。語(yǔ)言基礎(chǔ)類庫(kù)提供了[XML生成、解析轉(zhuǎn)換]的能力。 URL、URI構(gòu)造和解析能力:其中[U
    發(fā)表于 02-20 16:44

    跪求大神--XML解析

    小弟近日做一案子,需要用到UDP通訊,內(nèi)容以XML格式發(fā)送接收。通訊沒有問題,現(xiàn)在的難題是如何把接收到的XML信息直接解析出來,提取想要的字符串內(nèi)容。NI里面有例子都是讀取文檔的,想問各路大神有沒有辦法直接從
    發(fā)表于 06-04 10:22

    XML解析轉(zhuǎn)樹形控件

    xml解析成樹形控件執(zhí)行速度奇慢代碼見附件版本8.6以上求提高效率的辦法
    發(fā)表于 10-17 14:59

    DevEco Studio將SVG文件轉(zhuǎn)換XML文件的過程分享

    轉(zhuǎn)為為XML格式的文件,然后布局文件引用轉(zhuǎn)換后的XML文件。這樣,就可以模擬器/預(yù)覽器或者
    發(fā)表于 05-06 11:23

    【中秋國(guó)慶不斷更】XMLHarmonyOS生成,解析轉(zhuǎn)換

    XML還支持命名空間、實(shí)體引用、注釋、處理指令等特性,使其能夠靈活地適應(yīng)各種數(shù)據(jù)需求。 語(yǔ)言基礎(chǔ)類庫(kù)提供了XML相關(guān)的基礎(chǔ)能力,包括:??XML生成??、??
    發(fā)表于 09-27 15:21

    【中秋國(guó)慶不斷更】XMLHarmonyOS生成,解析轉(zhuǎn)換(下)

    一、XML解析 對(duì)于以XML作為載體傳遞的數(shù)據(jù),實(shí)際使用需要對(duì)相關(guān)的節(jié)點(diǎn)進(jìn)行解析,一般包括??解析
    發(fā)表于 09-27 15:24

    HarmonyOS語(yǔ)言基礎(chǔ)類庫(kù)開發(fā)指南上線啦!

    指南中提供了詳細(xì)的介紹和開發(fā)指導(dǎo),幫助開發(fā)者全面了解并發(fā)實(shí)現(xiàn)、容器類庫(kù)基礎(chǔ)操作、XML生成解析轉(zhuǎn)換等。 本期HarmonyOS開發(fā)者資料
    發(fā)表于 10-18 16:36

    報(bào)文解析工具XML數(shù)據(jù)字典

    針對(duì)報(bào)文解析過程存在的數(shù)據(jù)存儲(chǔ)無序、查詢和調(diào)用不便等問題,提出應(yīng)用XML 數(shù)據(jù)字典進(jìn)行數(shù)據(jù)存儲(chǔ)的方案。根據(jù)給定的數(shù)據(jù)表,設(shè)計(jì)XML 形式的數(shù)據(jù)字典。實(shí)現(xiàn)
    發(fā)表于 03-28 09:38 ?36次下載

    MTK自帶的XML解析

    現(xiàn)在大多數(shù)軟件都用xml作為配置文件,MTK本身也帶了XML文件的解析,在此我不評(píng)說自帶XML解析效率
    發(fā)表于 08-31 16:00 ?0次下載

    MAVLink學(xué)習(xí)之路03 _XML定義MSG并生成C代碼

    MAVLink學(xué)習(xí)之路03_XML定義MSG并生成C代碼
    的頭像 發(fā)表于 03-07 16:46 ?3470次閱讀

    異構(gòu)文本數(shù)據(jù)轉(zhuǎn)換過程中解析XML文本的方法對(duì)比

    對(duì)異構(gòu)文本數(shù)據(jù)轉(zhuǎn)換過程中解析XML文本的DOM、SAX、JOM4J方法進(jìn)行對(duì)比研究,以解析時(shí)間、內(nèi)存堆占用空間、CPU占用率為評(píng)價(jià)指標(biāo)來判定4種解析
    發(fā)表于 03-25 11:12 ?9次下載
    異構(gòu)文本數(shù)據(jù)<b class='flag-5'>轉(zhuǎn)換過程中</b><b class='flag-5'>解析</b><b class='flag-5'>XML</b>文本的方法對(duì)比

    HarmonyOS語(yǔ)言基礎(chǔ)類庫(kù)開發(fā)指南上線啦!

    指南中提供了詳細(xì)的介紹和開發(fā)指導(dǎo),幫助開發(fā)者全面了解并發(fā)實(shí)現(xiàn)、容器類庫(kù)基礎(chǔ)操作、XML生成解析轉(zhuǎn)換等。 本期HarmonyOS開發(fā)者資料
    的頭像 發(fā)表于 10-18 16:20 ?428次閱讀
    <b class='flag-5'>HarmonyOS</b>語(yǔ)言基礎(chǔ)類庫(kù)開發(fā)指南上線啦!

    【JAVA UI】【HarmonyOS】【Demo】 鴻蒙如何進(jìn)行 xml 解析

    創(chuàng)建xml文件,創(chuàng)建model對(duì)象,構(gòu)建界面 2.數(shù)據(jù)進(jìn)行解析操作(重點(diǎn)) 3.運(yùn)行效果 第一步準(zhǔn)備條件 創(chuàng)建 xml 文件,創(chuàng)建 model 對(duì)象,構(gòu)建界面 1.1 rawfi
    的頭像 發(fā)表于 02-19 15:59 ?383次閱讀
    【JAVA UI】【<b class='flag-5'>HarmonyOS</b>】【Demo】 鴻蒙如何進(jìn)行 <b class='flag-5'>xml</b> <b class='flag-5'>解析</b>