XML在HarmonyOS中的生成,解析与转换(下)

本文详细介绍了在HarmonyOS中如何进行XML的解析,包括标签、属性和事件类型的解析,同时提供了场景示例。此外,还阐述了XML转换为JavaScript对象的过程和注意事项,以及开发步骤。
摘要由CSDN通过智能技术生成

一、XML 解析

对于以 XML 作为载体传递的数据,实际使用中需要对相关的节点进行解析,一般包括解析 XML 标签和标签值、解析 XML 属性和属性值、解析 XML 事件类型和元素深度三类场景。

XML 模块提供 XmlPullParser 类对 XML 文件解析,输入为含有 XML 文本的 ArrayBuffer 或 DataView,输出为解析得到的信息。

表 1 XML 解析选项

名称 类型 必填 说明
supportDoctype boolean 否 是否忽略文档类型。默认为 false,表示对文档类型进行解析。
ignoreNameSpace boolean 否 是否忽略命名空间。默认为 false,表示对命名空间进行解析。
tagValueCallbackFunction (name: string, value: string) => boolean 否 获取 tagValue 回调函数,打印标签及标签值。默认为 null,表示不进行 XML 标签和标签值的解析。
attributeValueCallbackFunction (name: string, value: string) => boolean 否 获取 attributeValue 回调函数, 打印属性及属性值。默认为 null,表示不进行 XML 属性和属性值的解析。
tokenValueCallbackFunction (eventType: EventType, value: ParseInfo) => boolean 否 获取 tokenValue 回调函数,打印标签事件类型及 parseInfo 对应属性。默认为 null,表示不进行 XML 事件类型解析。

注意事项

​ ● XML 解析及转换需要确保传入的 XML 数据符合标准格式。

​ ● XML 解析目前不支持按指定节点解析对应的节点值。

解析 XML 标签和标签值

​ 1. 引入模块。

import xml from '@ohos.xml';
import util from '@ohos.util'; // 需要使用util模块函数对文件编码

2.XML 文件编码后调用 XmlPullParser。

可以基于 ArrayBuffer 构造 XmlPullParser 对象, 也可以基于 DataView 构造 XmlPullParser 对象。

let strXml =
  '<?xml version="1.0" encoding="utf-8"?>' +
    '<note importance="high" logged="true">' +
    '<title>Play</title>' +
    '<lens>Work</lens>' +
    '</note>';
let textEncoder = new util.TextEncoder();
let arrBuffer = textEncoder.encodeInto(strXml); // 对数据编码,防止包含中文字符乱码
// 1.基于ArrayBuffer构造XmlPullParser对象
let that = new xml.XmlPullParser(arrBuffer.buffer, 'UTF-8');

// 2.基于DataView构造XmlPullParser对象
let dataView = new DataView(arrBuffer.buffer);
let that = new xml.XmlPullParser(dataView, 'UTF-8');

​ 3. 自定义回调函数,本例直接打印出标签及标签值。

let str = '';
function func(name, value){
   
  str = name + value;
  console.info(str);
  return true; //true:继续解析 false:停止解析
}

​ 4. 设置解析选项,调用 parse 函数。

let options = {
   supportDoctype:true, ignoreNameSpace:true, tagValueCallbackFunction:func};
that.parse(options);

输出结果如下所示:

note
title
Play
title
lens
Work
lens
note

解析 XML 属性和属性值

  1. 引入模块。
import xml from '@ohos.xml';
import util from '@ohos.util'; // 需要使用util模块函数对文件编码
  1. 对 XML 文件编码后调用 XmlPullParser。
let strXml =
  '<?xml version="1.0" encoding="utf-8"?>' +
    '<note importance="high" logged="true">' +
    '    <title>Play</title>' +
    '    <title>Happy</title>' +
    '    <lens>Work</lens>' +
    '</note>';
let textEncoder = new util.TextEnco
  • 15
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值