0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看威廉希尔官方网站 视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

OpenHarmony语言基础类库【@ohos.xml (xml解析与生成)】

jf_46214456 来源:jf_46214456 作者:jf_46214456 2024-05-08 17:05 次阅读

将XML文本转换为JavaScript对象、以及XML文件生成和解析的一系列接口

说明:

本模块首批接口从API version 8开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。

导入模块

import xml from '@ohos.xml';

XmlSerializer

XmlSerializer接口用于生成XML文件。

constructor

constructor(buffer: ArrayBuffer | DataView, encoding?: string)

XmlSerializer的构造函数。

系统能力: SystemCapability.Utils.Lang

参数

参数名类型必填说明
bufferArrayBufferDataView
encodingstring编码格式 , 默认'utf-8'(目前仅支持'utf-8')。

鸿蒙开发指导文档:gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md点击或者复制转到。

示例:

let arrayBuffer = new ArrayBuffer(2048);
let thatSer = new xml.XmlSerializer(arrayBuffer, "utf-8");
thatSer.setDeclaration();
let result = '< ?xml version="1.0" encoding="utf-8"? >';
let view = new Uint8Array(arrayBuffer);
let view1 = "";
for (let i = 0; i < result.length; ++i) {
    view1 = view1 + String.fromCodePoint(view[i]);
}
console.log(view1) // < ?xml version="1.0" encoding="utf-8"? >

setAttributes

setAttributes(name: string, value: string): void

设置Attributes方法。

系统能力: SystemCapability.Utils.Lang

参数:

参数名类型必填说明
namestring属性的key值。
valuestring属性的value值。

示例:

const MY_MAX = 2048;
let arrayBuffer = new ArrayBuffer(MY_MAX);
let thatSer = new xml.XmlSerializer(arrayBuffer);
thatSer.startElement("note");
thatSer.setAttributes("importance1", "high1");
thatSer.endElement();
let result = '< note importance1="high1"/ >';
let view = new Uint8Array(arrayBuffer);
let view1 = "";
for (let i = 0; i < result.length; ++i) {
    view1 = view1 + String.fromCodePoint(view[i]);
}
console.log(view1) // < note importance1="high1"/ >

addEmptyElement

addEmptyElement(name: string): void

写入一个空元素。

系统能力: SystemCapability.Utils.Lang

参数:

参数名类型必填说明
namestring该空元素的元素名。

示例:

const MY_MAX = 2048;
let arrayBuffer = new ArrayBuffer(MY_MAX);
let thatSer = new xml.XmlSerializer(arrayBuffer);
thatSer.addEmptyElement("d");
let result = '< d/ >';
let view = new Uint8Array(arrayBuffer);
let view1 = "";
for (let i = 0; i < result.length; ++i) {
    view1 = view1 + String.fromCodePoint(view[i]);
}
console.log(view1) // < d/ >

setDeclaration

setDeclaration(): void

编写带有编码的文件声明。

系统能力: SystemCapability.Utils.Lang

示例:

const MY_MAX = 2048;
let arrayBuffer = new ArrayBuffer(MY_MAX);
let thatSer = new xml.XmlSerializer(arrayBuffer);
thatSer.setDeclaration();
thatSer.setNamespace("h", "http://www.w3.org/TR/html4/");
thatSer.startElement("note");
thatSer.endElement();
let result = '< ?xml version="1.0" encoding="utf-8"? >rn< h:note xmlns:h="http://www.w3.org/TR/html4/"/ >';
let view = new Uint8Array(arrayBuffer);
let view1 = "";
for (let i = 0; i < result.length; ++i) {
    view1 = view1 + String.fromCodePoint(view[i]);
}
console.log(view1)
// < ?xml version="1.0" encoding="utf-8"? >
// < h:note xmlns:h="http://www.w3.org/TR/html4/"/ >

startElement

startElement(name: string): void

根据给定名称写入元素开始标记。

系统能力: SystemCapability.Utils.Lang

参数:

参数名类型必填说明
namestring当前元素的元素名。

示例:

const MY_MAX = 2048;
let arrayBuffer = new ArrayBuffer(MY_MAX);
let thatSer = new xml.XmlSerializer(arrayBuffer);
thatSer.setDeclaration();
thatSer.setNamespace("h", "http://www.w3.org/TR/html4/");
thatSer.startElement("note");
thatSer.endElement();
let result = '< ?xml version="1.0" encoding="utf-8"? >rn< h:note xmlns:h="http://www.w3.org/TR/html4/"/ >';
let view = new Uint8Array(arrayBuffer);
let view1 = "";
for (let i = 0; i < result.length; ++i) {
    view1 = view1 + String.fromCodePoint(view[i]);
}
console.log(JSON.stringify(view1)) // < ?xml version="1.0" encoding="utf-8"? >rn< h:note xmlns:h="http://www.w3.org/TR/html4/"/ >

endElement

endElement(): void

写入元素结束标记。

系统能力: SystemCapability.Utils.Lang

示例:

const MY_MAX = 2048;
let arrayBuffer = new ArrayBuffer(MY_MAX);
let thatSer = new xml.XmlSerializer(arrayBuffer);
thatSer.setDeclaration();
thatSer.setNamespace("h", "http://www.w3.org/TR/html4/");
thatSer.startElement("note");
thatSer.endElement();
let result = '< ?xml version="1.0" encoding="utf-8"? >rn< h:note xmlns:h="http://www.w3.org/TR/html4/"/ >';
let view = new Uint8Array(arrayBuffer);
let view1 = "";
for (let i = 0; i < result.length; ++i) {
    view1 = view1 + String.fromCodePoint(view[i]);
}
console.log(JSON.stringify(view1)) // < ?xml version="1.0" encoding="utf-8"? >rn< h:note xmlns:h="http://www.w3.org/TR/html4/"/ >

setNamespace

setNamespace(prefix: string, namespace: string): void

写入当前元素标记的命名空间。

系统能力: SystemCapability.Utils.Lang

参数:

参数名类型必填说明
prefixstring当前元素及其子元素的前缀。
namespacestring当前元素及其子元素的命名空间。

示例:

const MY_MAX = 2048;
let arrayBuffer = new ArrayBuffer(MY_MAX);
let thatSer = new xml.XmlSerializer(arrayBuffer);
thatSer.setDeclaration();
thatSer.setNamespace("h", "http://www.w3.org/TR/html4/");
thatSer.startElement("note");
thatSer.endElement();
let result = '< ?xml version="1.0" encoding="utf-8"? >rn< h:note xmlns:h="http://www.w3.org/TR/html4/"/ >';
let view = new Uint8Array(arrayBuffer);
let view1 = "";
for (let i = 0; i < result.length; ++i) {
    view1 = view1 + String.fromCodePoint(view[i]);
}
console.log(JSON.stringify(view1)) // < ?xml version="1.0" encoding="utf-8"? >rn< h:note xmlns:h="http://www.w3.org/TR/html4/"/ >

setComment

setComment(text: string): void

写入comment属性。

系统能力: SystemCapability.Utils.Lang

参数:

参数名类型必填说明
textstring当前元素的注释内容。

示例:

const MY_MAX = 2048;
let arrayBuffer = new ArrayBuffer(MY_MAX);
let thatSer = new xml.XmlSerializer(arrayBuffer);
thatSer.setComment("Hello, World!");
let result = '< !--Hello, World!-- >';
let view = new Uint8Array(arrayBuffer);
let view1 = "";
for (let i = 0; i < result.length; ++i) {
    view1 = view1 + String.fromCodePoint(view[i]);
}
console.log(view1) // < !--Hello, World!-- >

setCDATA

setCDATA(text: string): void

写入CDATA属性。

系统能力: SystemCapability.Utils.Lang

参数:

参数名类型必填说明
textstringCDATA属性的内容。

示例:

const MY_MAX = 2048;
let arrayBuffer = new ArrayBuffer(MY_MAX);
let thatSer = new xml.XmlSerializer(arrayBuffer);
thatSer.setCDATA('root SYSTEM')
let result = '< ![CDATA[root SYSTEM]] >';
let view = new Uint8Array(arrayBuffer);
let view1 = "";
for (let i = 0; i < result.length; ++i) {
    view1 = view1 + String.fromCodePoint(view[i]);
}
console.log(view1) // < ![CDATA[root SYSTEM]] >

[](https://gitee.com/openharmony/docs/blob/OpenHarmony-3.2-Release/zh-cn/application-dev/reference/apis/js-apis-xml.md#settext)setText

setText(text: string): void

设置Text方法。

系统能力: SystemCapability.Utils.Lang

参数:

参数名类型必填说明
textstringtext属性的内容。

示例:

const MY_MAX = 2048;
let arrayBuffer = new ArrayBuffer(MY_MAX);
let thatSer = new xml.XmlSerializer(arrayBuffer);
thatSer.startElement("note");
thatSer.setAttributes("importance", "high");
thatSer.setText("Happy1");
thatSer.endElement();
let result = '< note importance="high" >Happy1< /note >';
let view = new Uint8Array(arrayBuffer);
let view1 = "";
for (let i = 0; i < result.length; ++i) {
    view1 = view1 + String.fromCodePoint(view[i]);
}
console.log(view1) // < note importance="high" >Happy1< /note >

setDocType

setDocType(text: string): void

写入DocType属性。

系统能力: SystemCapability.Utils.Lang

参数:

参数名类型必填说明
textstringDocType属性的内容。

示例:

const MY_MAX = 2048;
let arrayBuffer = new ArrayBuffer(MY_MAX);
let thatSer = new xml.XmlSerializer(arrayBuffer);
thatSer.setDocType('root SYSTEM "http://www.test.org/test.dtd"');
let result = '< !DOCTYPE root SYSTEM "http://www.test.org/test.dtd" >';
let view = new Uint8Array(arrayBuffer);
let view1 = "";
for (let i = 0; i < result.length; ++i) {
    view1 = view1 + String.fromCodePoint(view[i]);
}
console.log(view1) // < !DOCTYPE root SYSTEM "http://www.test.org/test.dtd" >

XmlPullParser

XmlPullParser接口用于解析现有的XML文件。

constructor

constructor(buffer: ArrayBuffer | DataView, encoding?: string)

构造并返回一个XmlPullParser对象。

系统能力: SystemCapability.Utils.Lang

参数:

参数名类型必填说明
bufferArrayBufferDataView
encodingstring编码格式 , 默认'utf-8'(目前仅支持'utf-8')。

示例:

let strXml =
    '< ?xml version="1.0" encoding="utf-8"? >' +
    '< !DOCTYPE note [n< !ENTITY foo "baa" >] >' +
    '< note importance="high" logged="true" >' +
    '    < ![CDATA[rnfuncrion matchwo(a,6)rn{rnreturn 1;rn}rn]] >' +
    '    < !--Hello, World!-- >' +
    '    < company >John & Hans< /company >' +
    '    < title >Happy< /title >' +
    '    < title >Happy< /title >' +
    '    < lens >Work< /lens >' +
    '    < lens >Play< /lens >' +
    '    < ?go there? >' +
    '    < a >< b/ >< /a >' +
    '    < h:table xmlns:h="http://www.w3.org/TR/html4/" >' +
    '        < h:tr >' +
    '            < h:td >Apples< /h:td >' +
    '            < h:td >Bananas< /h:td >' +
    '        < /h:tr >' +
    '    < /h:table >' +
    '< /note >';
let textEncoder = new util.TextEncoder();
let arrbuffer = textEncoder.encodeInto(strXml);
let that = new xml.XmlPullParser(arrbuffer.buffer, 'UTF-8');
let str1 = '';
function func1(name, value){
    str1 += name+value;
    return true;
}
let options = {supportDoctype:true, ignoreNameSpace:true, tagValueCallbackFunction:func1}
that.parse(options);
console.log(str1)
//  note [< !ENTITY foo "baa" >]note    funcrion matchwo(a,6){return 1;}    Hello, World!    companyJohn amp;amp; Hanscompany    titleHappytitle    titleHappytitle    lensWorklens    lensPlaylens    go there    abba    h:table        h:tr            h:tdApplesh:td            h:tdBananash:td        h:tr    h:tablenote

parse

parse(option: ParseOptions): void

该接口用于解析xml。

系统能力: SystemCapability.Utils.Lang

参数:

参数名类型必填说明
option[ParseOptions]用户控制以及获取解析信息的选项。

示例:

let strXml =
            '< ?xml version="1.0" encoding="utf-8"? >' +
            '< note importance="high" logged="true" >' +
            '    < title >Happy< /title >' +
            '    < todo >Work< /todo >' +
            '    < todo >Play< /todo >' +
            '< /note >';
let textEncoder = new util.TextEncoder();
let arrbuffer = textEncoder.encodeInto(strXml);
let that = new xml.XmlPullParser(arrbuffer.buffer);
let arrTag = {};
let str = "";
let i = 0;
function func(key, value){
    arrTag[i] = 'key:'+key+' value:'+ value.getDepth();
    str += arrTag[i];
    i++;
    return true; // Determines whether to continually parse, which is used to continue or terminate parsing.
}
let options = {supportDoctype:true, ignoreNameSpace:true, tokenValueCallbackFunction:func}
that.parse(options);
console.log(str);
// 输出:
// key:0 value:0key:2 value:1key:10 value:1key:2 value:2key:4 value:2key:3 value:2key:10 value:1key:2 value:2key:4 value:2key:3 value:2key:10 value:1key:2 value:2key:4 value:2key:3 value:2key:3 value:1key:1 value:0
// 解析:
// key代表了当前事件类型,value为当前解析的深度。你可以根据EVENTTYPE来知道具体的解析事件。例如本示例结果key: value代表含义为:
// 0(START_DOCUMENT):0(起始深度为0), 2(START_TAG):1(解析到开始标签node, 对应深度为1), 10(WHITESPACE):1(解析到空白标签空格, 对应深度为1), 2(START_TAG):2(解析到开始标签title, 对应深度为2), ...

ParseOptions

xml解析选项。

系统能力: 以下各项对应的系统能力均为SystemCapability.Utils.Lang

名称类型必填说明
supportDoctypeboolean是否忽略Doctype , 默认false。
ignoreNameSpaceboolean是否忽略NameSpace,默认false。
tagValueCallbackFunction(name: string, value: string) => boolean获取tagValue回调函数 , 默认null。
attributeValueCallbackFunction(name: string, value: string) => boolean获取attributeValue回调函数 , 默认null。
tokenValueCallbackFunction(eventType: [EventType], value: [ParseInfo]) => boolean获取tokenValue回调函数, 默认null。

ParseInfo

当前xml解析信息。

getColumnNumber

getColumnNumber(): number

获取当前列号,从1开始。

系统能力: SystemCapability.Utils.Lang

返回值:

类型说明
number返回当前列号。

示例:

let strXml =
            '< ?xml version="1.0" encoding="utf-8"? >' +
            '< note importance="high" logged="true" >' +
            '    < title >Happy< /title >' +
            '    < todo >Work< /todo >' +
            '    < todo >Play< /todo >' +
            '< /note >';
let textEncoder = new util.TextEncoder();
let arrbuffer = textEncoder.encodeInto(strXml);
let that = new xml.XmlPullParser(arrbuffer.buffer);
let arrTag = {};
let str = "";
let i = 0;
function func(key, value){
    arrTag[i] = 'key:'+key+' value:'+ value.getColumnNumber();
    str += arrTag[i];
    i++;
    return true; // Determines whether to continually parse, which is used to continue or terminate parsing.
}
let options = {supportDoctype:true, ignoreNameSpace:true, tokenValueCallbackFunction:func}
that.parse(options);
console.log(str);
// 输出:
// key:0 value:1key:2 value:77key:10 value:81key:2 value:88key:4 value:93key:3 value:101key:10 value:105key:2 value:111key:4 value:115key:3 value:122key:10 value:126key:2 value:132key:4 value:136key:3 value:143key:3 value:150key:1 value:299

getDepth

getDepth(): number

获取元素的当前深度。

系统能力: SystemCapability.Utils.Lang

返回值:

类型说明
number返回元素的当前深度。

示例:

let strXml =
            '< ?xml version="1.0" encoding="utf-8"? >' +
            '< note importance="high" logged="true" >' +
            '    < title >Happy< /title >' +
            '    < todo >Work< /todo >' +
            '    < todo >Play< /todo >' +
            '< /note >';
let textEncoder = new util.TextEncoder();
let arrbuffer = textEncoder.encodeInto(strXml);
let that = new xml.XmlPullParser(arrbuffer.buffer);
let arrTag = {};
let str = "";
let i = 0;
function func(key, value){
    arrTag[i] = 'key:'+key+' value:'+ value.getDepth();
    str += arrTag[i];
    i++;
    return true; // Determines whether to continually parse, which is used to continue or terminate parsing.
}
let options = {supportDoctype:true, ignoreNameSpace:true, tokenValueCallbackFunction:func}
that.parse(options);
console.log(str);
// 输出:
// key:0 value:0key:2 value:1key:10 value:1key:2 value:2key:4 value:2key:3 value:2key:10 value:1key:2 value:2key:4 value:2key:3 value:2key:10 value:1key:2 value:2key:4 value:2key:3 value:2key:3 value:1key:1 value:0
// 解析:
// key代表了当前事件类型,value为当前解析的深度。你可以根据EVENTTYPE来知道具体的解析事件。例如本示例结果key: value代表含义为:
// 0(START_DOCUMENT):0(起始深度为0), 2(START_TAG):1(解析到开始标签node, 对应深度为1), 10(WHITESPACE):1(解析到空白标签空格, 对应深度为1), 2(START_TAG):2(解析到开始标签title, 对应深度为2), ...

getLineNumber

getLineNumber(): number

获取当前行号,从1开始。

系统能力: SystemCapability.Utils.Lang

返回值:

类型说明
number返回当前行号。

示例:

let strXml =
            '< ?xml version="1.0" encoding="utf-8"? >' +
            '< note importance="high" logged="true" >' +
            '    < title >Happy< /title >' +
            '    < todo >Work< /todo >' +
            '    < todo >Play< /todo >' +
            '< /note >';
let textEncoder = new util.TextEncoder();
let arrbuffer = textEncoder.encodeInto(strXml);
let that = new xml.XmlPullParser(arrbuffer.buffer);
let arrTag = {};
let str = "";
let i = 0;
function func(key, value){
    arrTag[i] = 'key:'+key+' value:'+ value.getLineNumber();
    str += arrTag[i];
    i++;
    return true; // Determines whether to continually parse, which is used to continue or terminate parsing.
}
let options = {supportDoctype:true, ignoreNameSpace:true, tokenValueCallbackFunction:func}
that.parse(options);
console.log(str);
// 输出:
// key:0 value:1key:2 value:1key:10 value:1key:2 value:1key:4 value:1key:3 value:1key:10 value:1key:2 value:1key:4 value:1key:3 value:1key:10 value:1key:2 value:1key:4 value:1key:3 value:1key:3 value:1key:1 value:1

getName

getName(): string

获取当前元素名称。

系统能力: SystemCapability.Utils.Lang

返回值:

类型说明
string返回当前元素名称。

示例:

let strXml =
            '< ?xml version="1.0" encoding="utf-8"? >' +
            '< note importance="high" logged="true" >' +
            '    < title >Happy< /title >' +
            '    < todo >Work< /todo >' +
            '    < todo >Play< /todo >' +
            '< /note >';
let textEncoder = new util.TextEncoder();
let arrbuffer = textEncoder.encodeInto(strXml);
let that = new xml.XmlPullParser(arrbuffer.buffer);
let arrTag = {};
let str = "";
let i = 0;
function func(key, value){
    arrTag[i] = 'key:'+key+' value:'+ value.getName();
    str += arrTag[i];
    i++;
    return true; // Determines whether to continually parse, which is used to continue or terminate parsing.
}
let options = {supportDoctype:true, ignoreNameSpace:true, tokenValueCallbackFunction:func}
that.parse(options);
console.log(str);
// 输出:
// key:0 value:key:2 value:notekey:10 value:key:2 value:titlekey:4 value:key:3 value:titlekey:10 value:key:2 value:todokey:4 value:key:3 value:todokey:10 value:key:2 value:todokey:4 value:key:3 value:todokey:3 value:notekey:1 value:

getNamespace

getNamespace(): string

获取当前元素的命名空间。

系统能力: SystemCapability.Utils.Lang

返回值:

类型说明
string返回当前元素的命名空间。

示例:

let strXml =
            '< ?xml version="1.0" encoding="utf-8"? >' +
            '< note importance="high" logged="true" >' +
            '    < title >Happy< /title >' +
            '    < todo >Work< /todo >' +
            '    < todo >Play< /todo >' +
            '< /note >';
let textEncoder = new util.TextEncoder();
let arrbuffer = textEncoder.encodeInto(strXml);
let that = new xml.XmlPullParser(arrbuffer.buffer);
let arrTag = {};
let str = "";
let i = 0;
function func(key, value){
    arrTag[i] = 'key:'+key+' value:'+ value.getNamespace();
    str += arrTag[i];
    i++;
    return true; // Determines whether to continually parse, which is used to continue or terminate parsing.
}
let options = {supportDoctype:true, ignoreNameSpace:true, tokenValueCallbackFunction:func}
that.parse(options);
console.log(str);
// 输出:
// key:0 value:key:2 value:key:10 value:key:2 value:key:4 value:key:3 value:key:10 value:key:2 value:key:4 value:key:3 value:key:10 value:key:2 value:key:4 value:key:3 value:key:3 value:key:1 value:

getPrefix

getPrefix(): string

获取当前元素前缀。

系统能力: SystemCapability.Utils.Lang

返回值:

类型说明
string返回当前元素前缀。

示例:

let strXml =
            '< ?xml version="1.0" encoding="utf-8"? >' +
            '< note importance="high" logged="true" >' +
            '    < title >Happy< /title >' +
            '    < todo >Work< /todo >' +
            '    < todo >Play< /todo >' +
            '< /note >';
let textEncoder = new util.TextEncoder();
let arrbuffer = textEncoder.encodeInto(strXml);
let that = new xml.XmlPullParser(arrbuffer.buffer);
let arrTag = {};
let str = "";
let i = 0;
function func(key, value){
    arrTag[i] = 'key:'+key+' value:'+ value.getPrefix();
    str += arrTag[i];
    i++;
    return true; // Determines whether to continually parse, which is used to continue or terminate parsing.
}
let options = {supportDoctype:true, ignoreNameSpace:true, tokenValueCallbackFunction:func}
that.parse(options);
console.log(str);
// 输出:
// key:0 value:key:2 value:key:10 value:key:2 value:key:4 value:key:3 value:key:10 value:key:2 value:key:4 value:key:3 value:key:10 value:key:2 value:key:4 value:key:3 value:key:3 value:key:1 value:

getText

getText(): string

获取当前事件的文本内容。

系统能力: SystemCapability.Utils.Lang

返回值:

类型说明
string返回当前事件的文本内容。

示例:

let strXml =
            '< ?xml version="1.0" encoding="utf-8"? >' +
            '< note importance="high" logged="true" >' +
            '    < title >Happy< /title >' +
            '    < todo >Work< /todo >' +
            '    < todo >Play< /todo >' +
            '< /note >';
let textEncoder = new util.TextEncoder();
let arrbuffer = textEncoder.encodeInto(strXml);
let that = new xml.XmlPullParser(arrbuffer.buffer);
let arrTag = {};
let str = "";
let i = 0;
function func(key, value){
    arrTag[i] = 'key:'+key+' value:'+ value.getText();
    str += arrTag[i];
    i++;
    return true; // Determines whether to continually parse, which is used to continue or terminate parsing.
}
let options = {supportDoctype:true, ignoreNameSpace:true, tokenValueCallbackFunction:func}
that.parse(options);
console.log(str);
// 输出:
// key:0 value:key:2 value:key:10 value:    key:2 value:key:4 value:Happykey:3 value:key:10 value:    key:2 value:key:4 value:Workkey:3 value:key:10 value:    key:2 value:key:4 value:Playkey:3 value:key:3 value:key:1 value:

isEmptyElementTag

isEmptyElementTag(): boolean

判断当前元素是否为空元素。

系统能力: SystemCapability.Utils.Lang

返回值:

类型说明
boolean返回true,当前元素为空元素。

示例:

let strXml =
            '< ?xml version="1.0" encoding="utf-8"? >' +
            '< note importance="high" logged="true" >' +
            '    < title >Happy< /title >' +
            '    < todo >Work< /todo >' +
            '    < todo >Play< /todo >' +
            '< /note >';
let textEncoder = new util.TextEncoder();
let arrbuffer = textEncoder.encodeInto(strXml);
let that = new xml.XmlPullParser(arrbuffer.buffer);
let arrTag = {};
let str = "";
let i = 0;
function func(key, value){
    arrTag[i] = 'key:'+key+' value:'+ value.isEmptyElementTag();
    str += arrTag[i];
    i++;
    return true; // Determines whether to continually parse, which is used to continue or terminate parsing.
}
let options = {supportDoctype:true, ignoreNameSpace:true, tokenValueCallbackFunction:func}
that.parse(options);
console.log(str);
// 输出:
// key:0 value:falsekey:2 value:falsekey:10 value:falsekey:2 value:falsekey:4 value:falsekey:3 value:falsekey:10 value:falsekey:2 value:falsekey:4 value:falsekey:3 value:falsekey:10 value:falsekey:2 value:falsekey:4 value:falsekey:3 value:falsekey:3 value:falsekey:1 value:false

isWhitespace

isWhitespace(): boolean

判断当前文本事件是否仅包含空格字符。

系统能力: SystemCapability.Utils.Lang

返回值:

类型说明
boolean返回true,当前文本事件仅包含空格字符。

示例:

let strXml =
            '< ?xml version="1.0" encoding="utf-8"? >' +
            '< note importance="high" logged="true" >' +
            '    < title >Happy< /title >' +
            '    < todo >Work< /todo >' +
            '    < todo >Play< /todo >' +
            '< /note >';
let textEncoder = new util.TextEncoder();
let arrbuffer = textEncoder.encodeInto(strXml);
let that = new xml.XmlPullParser(arrbuffer.buffer);
let arrTag = {};
let str = "";
let i = 0;
function func(key, value){
    arrTag[i] = 'key:'+key+' value:'+ value.isWhitespace();
    str += arrTag[i];
    i++;
    return true; // Determines whether to continually parse, which is used to continue or terminate parsing.
}
let options = {supportDoctype:true, ignoreNameSpace:true, tokenValueCallbackFunction:func}
that.parse(options);
console.log(str);
// 输出:
// key:0 value:truekey:2 value:falsekey:10 value:truekey:2 value:truekey:4 value:falsekey:3 value:truekey:10 value:truekey:2 value:truekey:4 value:falsekey:3 value:truekey:10 value:truekey:2 value:truekey:4 value:falsekey:3 value:truekey:3 value:truekey:1 value:true

getAttributeCount

getAttributeCount(): number

获取当前开始标记的属性数。

系统能力: SystemCapability.Utils.Lang

返回值:

类型说明
number当前开始标记的属性数。

示例:

let strXml =
            '< ?xml version="1.0" encoding="utf-8"? >' +
            '< note importance="high" logged="true" >' +
            '    < title >Happy< /title >' +
            '    < todo >Work< /todo >' +
            '    < todo >Play< /todo >' +
            '< /note >';
let textEncoder = new util.TextEncoder();
let arrbuffer = textEncoder.encodeInto(strXml);
let that = new xml.XmlPullParser(arrbuffer.buffer);
let arrTag = {};
let str = "";
let i = 0;
function func(key, value){
    arrTag[i] = 'key:'+key+' value:'+ value.getAttributeCount();
    str += arrTag[i];
    i++;
    return true; // Determines whether to continually parse, which is used to continue or terminate parsing.
}
let options = {supportDoctype:true, ignoreNameSpace:true, tokenValueCallbackFunction:func}
that.parse(options);
console.log(str);
// 输出:
// key:0 value:0key:2 value:2key:10 value:0key:2 value:0key:4 value:0key:3 value:0key:10 value:0key:2 value:0key:4 value:0key:3 value:0key:10 value:0key:2 value:0key:4 value:0key:3 value:0key:3 value:0key:1 value:0

EventType

事件枚举。

系统能力: 以下各项对应的系统能力均为SystemCapability.Utils.Lang

名称说明
START_DOCUMENT0启动文件事件。
END_DOCUMENT1结束文件事件。
START_TAG2启动标签事件。
END_TAG3结束标签事件。
TEXT4文本事件。
CDSECT5CDATA事件。
COMMENT6XML注释事件。
DOCDECL7XML文档类型声明事件。
INSTRUCTION8XML处理指令声明事件。
ENTITY_REFERENCE9实体引用事件。
WHITESPACE10空白事件。

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 接口
    +关注

    关注

    33

    文章

    8598

    浏览量

    151156
  • XML
    XML
    +关注

    关注

    0

    文章

    188

    浏览量

    33084
  • API
    API
    +关注

    关注

    2

    文章

    1501

    浏览量

    62017
  • 鸿蒙
    +关注

    关注

    57

    文章

    2352

    浏览量

    42856
  • OpenHarmony
    +关注

    关注

    25

    文章

    3722

    浏览量

    16317
收藏 人收藏

    评论

    相关推荐

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

    一、XML 概述 XML(可扩展标记语言)是一种用于描述数据的标记语言,旨在提供一种通用的方式来传输和存储数据,特别是 Web 应用程序中经常使用的数据。
    的头像 发表于 02-18 09:35 663次阅读

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

    一、XML 解析 对于以 XML 作为载体传递的数据,实际使用中需要对相关的节点进行解析,一般包括解析
    的头像 发表于 02-18 10:07 740次阅读

    ArkTS语言基础-解析

    被设计用来传输和存储数据,是一种可扩展标记语言语言基础提供了[XML生成
    发表于 02-20 16:44

    xml SAX教程

    。不同于其他大多数XML标准的是,SAX没有语言开发商必须遵守的标准SAX参考版本。因此,SAX的不同实现可能采用区别很大的接口。作为接口,SAX是事件驱动型XML解析的一个标准接口(
    发表于 10-07 13:32

    跪求大神--XML解析

    小弟近日做一案子,需要用到UDP通讯,内容以XML格式发送接收。通讯没有问题,现在的难题是如何把接收到的XML信息直接解析出来,提取想要的字符串内容。NI里面有例子都是读取文档的,想问各路大神有没有办法直接从
    发表于 06-04 10:22

    OpenHarmony仓库大整理 可以指定系统类型下载对应代码

    关系不大,生命周期相对更长。平台仓都组织在manifests/ohos/ohos.xml文件中,而芯片仓都组织在**manifests/chipsets/**目录下。全量的代码仓组织形式如下所示
    发表于 04-21 14:44

    OpenHarmony仓库大整理 可以指定系统类型下载对应代码

    相对更长。平台仓都组织在manifests/ohos/ohos.xml文件中,而芯片仓都组织在**manifests/chipsets/**目录下。全量的代码仓组织形式如下所示:manifest
    发表于 05-12 15:44

    【中秋国庆不断更】XML在HarmonyOS中的生成解析与转换(上)

    XML还支持命名空间、实体引用、注释、处理指令等特性,使其能够灵活地适应各种数据需求。 语言基础提供了XML相关的基础能力,包括:​
    发表于 09-27 15:21

    HarmonyOS语言基础开发指南上线啦!

    指南中提供了详细的介绍和开发指导,帮助开发者全面了解并发实现、容器基础操作、XML生成解析与转换等。 本期HarmonyOS开发者资料
    发表于 10-18 16:36

    MTK自带的XML解析

    现在大多数软件都用xml作为配置文件,MTK本身也带了XML文件的解析,在此我不评说自带XML解析效率
    发表于 08-31 16:00 0次下载

    Java解析XML的一种数据绑定威廉希尔官方网站

    文中为了进一步用Java语言有效地解析XML文件,提出了一套XML文件与Java程序的绑定威廉希尔官方网站 ,通过该威廉希尔官方网站 方法能够使开发人员方便地将XML
    发表于 08-29 14:44 0次下载

    HarmonyOS语言基础开发指南上线啦!

    指南中提供了详细的介绍和开发指导,帮助开发者全面了解并发实现、容器基础操作、XML生成解析与转换等。 本期HarmonyOS开发者资料
    的头像 发表于 10-18 16:20 584次阅读
    HarmonyOS<b class='flag-5'>语言</b>基础<b class='flag-5'>类</b><b class='flag-5'>库</b>开发指南上线啦!

    OpenHarmony语言基础【@ohos.convertxml】

    本模块提供转换xml文本为JavaScript对象的功能。
    的头像 发表于 04-23 21:09 388次阅读
    <b class='flag-5'>OpenHarmony</b><b class='flag-5'>语言</b>基础<b class='flag-5'>类</b><b class='flag-5'>库</b>【@<b class='flag-5'>ohos</b>.convertxml】

    鸿蒙语言基础ohos.convertxml xml转换JavaScript

    转换xml文本为JavaScript对象。
    的头像 发表于 07-08 15:54 429次阅读
    鸿蒙<b class='flag-5'>语言</b>基础<b class='flag-5'>类</b><b class='flag-5'>库</b>:<b class='flag-5'>ohos</b>.convertxml  <b class='flag-5'>xml</b>转换JavaScript

    鸿蒙语言基础ohos.xml xml解析生成

    XmlSerializer的构造函数。
    的头像 发表于 07-12 09:39 335次阅读