1、概 述
XML(可扩展标记语言)是一种用于描述数据的标记语言,旨在提供一种通用的方式来传输和存储数据,特别是Web应用程序中经常使用的数据。XML并不预定义标记。因此,XML更加灵活,并且可以适用于广泛的应用领域。
XML文档由元素(element)、属性(attribute)和内容(content)组成。
-
-
内容则是元素包含的数据或子元素。
-
属性提供了有关元素的其他信息。
-
元素指的是标记对,包含文本、属性或其他元素。
-
XML还可以通过使用XML Schema或DTD(文档类型定义)来定义文档结构。这些机制允许开发人员创建自定义规则以验证XML文档是否符合其预期的格式。
XML还支持命名空间、实体引用、注释、处理指令等特性,使其能够灵活地适应各种数据需求。
语言基础类库提供了XML相关的基础能力,包括:XML的生成、XML的解析和XML的转换。
2、生成XML
一个生成XML的示例如下(关注 9 ~ 41行,genXml方法):
import { xml, util } from '@kit.ArkTS';
@Entry
@Component
@Preview
struct Index {
@State result: string = '';
genXml() {
// 方式1:基于Arraybuffer构造XmlSerializer对象
let arrayBuffer: ArrayBuffer = new ArrayBuffer(2048); // 创建一个2048字节的缓冲区
let thatSer: xml.XmlSerializer = new xml.XmlSerializer(arrayBuffer); // 基于Arraybuffer构造XmlSerializer对象
// 方式2:基于DataView构造XmlSerializer对象
// let arrayBuffer: ArrayBuffer = new ArrayBuffer(2048);
// let dataView: DataView = new DataView(arrayBuffer);
// let thatSer: xml.XmlSerializer = new xml.XmlSerializer(dataView);
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('Giana');
thatSer.endElement();
thatSer.startElement('year');
thatSer.setText('2005');
thatSer.endElement();
thatSer.endElement();
thatSer.endElement();
let view: Uint8Array = new Uint8Array(arrayBuffer); // 使用Uint8Array读取arrayBuffer的数据
let textDecoder: util.TextDecoder = util.TextDecoder.create(); // 调用util模块的TextDecoder类
let res: string = textDecoder.decodeToString(view); // 对view解码
// res输出结果
this.result = res;
}
build() {
Column() {
Row() {
Button('生成XML')
.onClick(() => {
this.genXml();
})
.width('100%')
}
.width('100%')
Row() {
Text(this.result)
.width('100%')
.padding(10)
.borderColor(Color.Gray)
.borderWidth(1)
}.width('100%')
}
.height('100%')
}
}
效果如下: