XML生成

2024-02-16 13:47 更新

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

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

注意事項

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

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

開發(fā)步驟

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

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

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

  1. 引入模塊。

    1. import xml from '@ohos.xml';
    2. import util from '@ohos.util';
  2. 創(chuàng)建緩沖區(qū),構(gòu)造XmlSerializer對象(可以基于Arraybuffer構(gòu)造XmlSerializer對象, 也可以基于DataView構(gòu)造XmlSerializer對象)。

    1. // 1.基于Arraybuffer構(gòu)造XmlSerializer對象
    2. let arrayBuffer = new ArrayBuffer(2048); // 創(chuàng)建一個2048字節(jié)的緩沖區(qū)
    3. let thatSer = new xml.XmlSerializer(arrayBuffer); // 基于Arraybuffer構(gòu)造XmlSerializer對象
    4. // 2.基于DataView構(gòu)造XmlSerializer對象
    5. let arrayBuffer = new ArrayBuffer(2048); // 創(chuàng)建一個2048字節(jié)的緩沖區(qū)
    6. let dataView = new DataView(arrayBuffer); // 使用DataView對象操作ArrayBuffer對象
    7. let thatSer = new xml.XmlSerializer(dataView); // 基于DataView構(gòu)造XmlSerializer對象
  3. 調(diào)用XML元素生成函數(shù)。

    1. thatSer.setDeclaration(); // 寫入xml的聲明
    2. thatSer.startElement('bookstore'); // 寫入元素開始標(biāo)記
    3. thatSer.startElement('book'); // 嵌套元素開始標(biāo)記
    4. thatSer.setAttributes('category', 'COOKING'); // 寫入屬性及屬性值
    5. thatSer.startElement('title');
    6. thatSer.setAttributes('lang', 'en');
    7. thatSer.setText('Everyday'); // 寫入標(biāo)簽值
    8. thatSer.endElement(); // 寫入結(jié)束標(biāo)記
    9. thatSer.startElement('author');
    10. thatSer.setText('Giada');
    11. thatSer.endElement();
    12. thatSer.startElement('year');
    13. thatSer.setText('2005');
    14. thatSer.endElement();
    15. thatSer.endElement();
    16. thatSer.endElement();
  4. 使用Uint8Array操作Arraybuffer,調(diào)用TextDecoder對Uint8Array解碼后輸出。

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

    輸出結(jié)果如下:

    1. <?xml version=\"1.0\" encoding=\"utf-8\"?><bookstore>\r\n <book category=\"COOKING\">\r\n <title lang=\"en\">Everyday</title>
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號