HarmonyOS API:语言基础类库

joytrian
发布于 2023-4-11 16:56
浏览
0收藏

版本:v3.1 Beta

@ohos.convertxml (xml转换JavaScript)

更新时间: 2023-02-17 09:19


本模块提供转换xml文本为JavaScript对象的功能。


说明

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

导入模块

import convertxml from '@ohos.convertxml';

ConvertXML

convertToJSObject9+

convertToJSObject(xml: string, options?: ConvertOptions) : Object

转换xml文本为JavaScript对象。

系统能力: SystemCapability.Utils.Lang

参数:

参数名

类型

必填

说明

xml

string

传入的xml文本。

options

​ConvertOptions​

转换选项。

返回值:

类型

说明

Object

处理后返回的JavaScript对象。

错误码:

以下错误码的详细介绍请参见​​语言基础类库错误码​​。

错误码ID

错误信息

10200002

Invalid xml string.

示例:

let xml =
    '<?xml version="1.0" encoding="utf-8"?>' +
    '<note importance="high" logged="true">' +
    '    <title>Happy</title>' +
    '    <todo>Work</todo>' +
    '    <todo>Play</todo>' +
    '</note>';
let conv = new convertxml.ConvertXML()
let options = {trim : false, declarationKey:"_declaration",
    instructionKey : "_instruction", attributesKey : "_attributes",
    textKey : "_text", cdataKey:"_cdata", doctypeKey : "_doctype",
    commentKey : "_comment", parentKey : "_parent", typeKey : "_type",
    nameKey : "_name", elementsKey : "_elements"}
let result = JSON.stringify(conv.convertToJSObject(xml, options));
console.log(result);
// 输出(宽泛型)
// {"_declaration":{"_attributes":{"version":"1.0","encoding":"utf-8"}},"_elements":[{"_type":"element","_name":"note","_attributes":{"importance":"high","logged":"true"},"_elements":[{"_type":"element","_name":"title","_elements":[{"_type":"text","_text":"Happy"}]},{"_type":"element","_name":"todo","_elements":[{"_type":"text","_text":"Work"}]},{"_type":"element","_name":"todo","_elements":[{"_type":"text","_text":"Play"}]}]}]}

convert(deprecated)

convert(xml: string, options?: ConvertOptions) : Object

转换xml文本为JavaScript对象。

说明

从API version 8开始支持,从API version 9开始废弃,建议使用​​convertToJSObject9+​替代。

系统能力: SystemCapability.Utils.Lang

参数:

参数名

类型

必填

说明

xml

string

传入的xml文本。

options

​ConvertOptions​

转换选项。

返回值:

类型

说明

Object

处理后返回的JavaScript对象。

示例:

let xml =
    '<?xml version="1.0" encoding="utf-8"?>' +
    '<note importance="high" logged="true">' +
    '    <title>Happy</title>' +
    '    <todo>Work</todo>' +
    '    <todo>Play</todo>' +
    '</note>';
let conv = new convertxml.ConvertXML();
let options = {trim : false, declarationKey:"_declaration",
    instructionKey : "_instruction", attributesKey : "_attributes",
    textKey : "_text", cdataKey:"_cdata", doctypeKey : "_doctype",
    commentKey : "_comment", parentKey : "_parent", typeKey : "_type",
    nameKey : "_name", elementsKey : "_elements"}
let result = JSON.stringify(conv.convert(xml, options));
console.log(result);
// 输出(宽泛型)
// {"_declaration":{"_attributes":{"version":"1.0","encoding":"utf-8"}},"_elements":[{"_type":"element","_name":"note","_attributes":{"importance":"high","logged":"true"},"_elements":[{"_type":"element","_name":"title","_elements":[{"_type":"text","_text":"Happy"}]},{"_type":"element","_name":"todo","_elements":[{"_type":"text","_text":"Work"}]},{"_type":"element","_name":"todo","_elements":[{"_type":"text","_text":"Play"}]}]}]}

ConvertOptions

转换选项。

系统能力: SystemCapability.Utils.Lang

名称

类型

必填

说明

trim

boolean

是否修剪位于文本前后的空白字符,默认false。

ignoreDeclaration

boolean

是否忽略xml写入声明指示,默认false。

ignoreInstruction

boolean

是否忽略xml的写入处理指令,默认false。

ignoreAttributes

boolean

是否跨多行打印属性并缩进属性,默认false。

ignoreComment

boolean

是否忽略元素的注释信息,默认false。

ignoreCDATA

boolean

是否忽略元素的CDATA信息,默认false。

ignoreDoctype

boolean

是否忽略元素的Doctype信息,默认false。

ignoreText

boolean

是否忽略元素的文本信息,默认false。

declarationKey

string

用于输出对象中declaration的属性键的名称,默认_declaration。

instructionKey

string

用于输出对象中instruction的属性键的名称,默认_instruction。

attributesKey

string

用于输出对象中attributes的属性键的名称,默认_attributes。

textKey

string

用于输出对象中text的属性键的名称,默认_text。

cdataKey

string

用于输出对象中cdata的属性键的名称,默认_cdata。

doctypeKey

string

用于输出对象中doctype的属性键的名称,默认_doctype。

commentKey

string

用于输出对象中comment的属性键的名称,默认_comment。

parentKey

string

用于输出对象中parent的属性键的名称,默认_parent。

typeKey

string

用于输出对象中type的属性键的名称,默认_type。

nameKey

string

用于输出对象中name的属性键的名称,默认_name。

elementsKey

string

用于输出对象中elements的属性键的名称,默认_elements。

@ohos.uri (URI字符串解析)

更新时间: 2023-02-17 09:19


说明

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

导入模块

import uri from '@ohos.uri'

URI

属性

系统能力: SystemCapability.Utils.Lang

名称

类型

可读

可写

说明

scheme

string

获取URI 的协议部分。

userInfo

string

获取 URI 的用户信息部分。

host

string

获取 URI 的主机名部分(不带端口)。

port

string

获取 URI 的端口部分。

path

string

获取 URI 的路径部分。

query

string

获取 URI 的查询部分。

fragment

string

获取 URI 的片段部分

authority

string

获取此URI的解码权限组件部分。

ssp

string

获取URI的解码方案特定部分。

命名规则

命名形式:

标准uri定义由以下三个部分组成 [scheme:]scheme-specific-part[#fragment]

  • scheme: 协议名,根据需要填写。例如http、https、ftp、datashare、dataability等。
  • scheme-specific-part: URI的特定解码方案特定部分,由[//][authority][path][?query]组成,根据需要填写。

        ◆ authority: URI的解码权限组件部分。由[userinfo@]host[:port]组成,根据需要填写。

              ◊ userinfo: 用户信息,根据需要填写。

              ◊ host: 服务器的主机名部分,当authority存在时,此项必填。

              ◊ port: 服务器端口,根据需要填写。

         ◆ path: 路径信息,根据需要填写。

         ◆ query: 查询部分,根据需要填写。

  • fragment: 片段部分,根据需要填写。

URI示例:

const result1 = new uri.URI("ftp://ftp.aaa.bbb.ccc/dddd/eee.txt");
console.log(result1.host) // ftp.aaa.bbb.ccc
console.log(result1.fragment) // null
console.log(result1.path) // /dddd/eee.txt
console.log(result1.scheme) // ftp
console.log(result1.userInfo) // null
console.log(result1.port) // -1
console.log(result1.query) // null

const result2 = new uri.URI("gopher://spinaltap.micro.umn.edu/00/Weather/California/Los%20Angeles#fragment");
console.log(result2.host) // spinaltap.micro.umn.edu
console.log(result2.fragment) // fragment
console.log(result2.path) // /dddd/eee.txt
console.log(result2.scheme) // ftp
console.log(result2.userInfo) // null
console.log(result2.port) //-1
console.log(result2.query) // null

const result3 = new uri.URI("datashare:///com.samples.datasharetest.DataShare/DB00/TBL00");
console.log(result3.host) // null
console.log(result3.fragment) // null
console.log(result3.path) // /com.samples.datasharetest.DataShare/DB00/TBL00
console.log(result3.scheme) // datashare
console.log(result3.userInfo) // null
console.log(result3.port) // -1
console.log(result3.query) // null

const result4 = new uri.URI("https://username:password@host:8080/directory/file?foo=1&bar=2#fragment");
console.log(result4.host) // host
console.log(result4.fragment) // fragment
console.log(result4.path) // /directory/file
console.log(result4.scheme) // https
console.log(result4.userInfo) // username:password
console.log(result4.port) // 8080
console.log(result4.query) // foo=1&bar=2

const result5 = new uri.URI("dataability:///com.example.DataAbility");
console.log(result5.host) // null
console.log(result5.fragment) // null
console.log(result5.path) // /com.example.DataAbility:
console.log(result5.scheme) // dataability
console.log(result5.userInfo) // null
console.log(result5.port) // -1
console.log(result5.query) // null

constructor

constructor(uri: string)

constructor是URI的构造函数。

系统能力: SystemCapability.Utils.Lang

参数:

参数名

类型

必填

说明

uri

string

入参对象。

错误码:

以下错误码的详细介绍请参见​​语言基础类库错误码​​。

错误码ID

错误信息

10200002

Invalid uri string.

示例:

let mm = 'https://username:password@host:8080/directory/file?foo=1&bar=2#fragment';
new uri.URI(mm); // Output 'https://username:password@host:8080/directory/file?foo=1&bar=2#fragment';

new uri.URI('https://username:password@host:8080'); // Output 'https://username:password@host:8080';

toString

toString(): string

系统能力: SystemCapability.Utils.Lang

返回适用于URI中的查询字符串。

返回值:

类型

说明

string

返回网址的字符串序列化。

示例:

const result = new uri.URI('https://username:password@host:8080/directory/file?query=pppppp#qwer=da');
result.toString()

equals(deprecated)

equals(other: URI): boolean

判断此URI是否与其他URI对象相等。

说明

从API version 8开始支持,从API version 9开始废弃,建议使用​​equalsTo9+​替代。

系统能力: SystemCapability.Utils.Lang

参数:

参数名

类型

必填

说明

other

​URI​

需要比较的URI对象。

返回值:

类型

说明

boolean

返回true表示相等,否则返回false。

示例:

const uriInstance = new uri.URI('https://username:password@host:8080/directory/file?query=pppppp#qwer=da');
const uriInstance1 = new uri.URI('https://username:password@host:8080/directory/file?query=pppppp#qwer=da');
uriInstance.equals(uriInstance1);

equalsTo9+

equalsTo(other: URI): boolean

判断此URI是否与其他URI对象相等。

系统能力: SystemCapability.Utils.Lang

参数:

参数名

类型

必填

说明

other

​URI​

需要比较的URI对象。

返回值:

类型

说明

boolean

返回true表示相等,否则返回false。

示例:

const uriInstance = new uri.URI('https://username:password@host:8080/directory/file?query=pppppp#qwer=da');
const uriInstance1 = new uri.URI('https://username:password@host:8080/directory/file?query=pppppp#qwer=da');
uriInstance.equalsTo(uriInstance1);

checkIsAbsolute

checkIsAbsolute(): boolean

判断此URI是否为绝对URI(是否定义了scheme组件)。

系统能力: SystemCapability.Utils.Lang

返回值:

类型

说明

boolean

如果是绝对URI返回true,否则返回false。

示例:

const uriInstance = new uri.URI('https://username:password@www.qwer.com:8080?query=pppppp');
console.log(`${uriInstance.checkIsAbsolute()}`); // true
const uriInstance1 = new uri.URI('xxx.com/suppliers.htm');
console.log(`${uriInstance1.checkIsAbsolute()}`); // false

normalize

normalize(): URI

规范化此URI的路径。

系统能力: SystemCapability.Utils.Lang

返回值:

类型

说明

URI

返回一个path被规范化后的URI对象。

示例:

const uriInstance = new uri.URI('https://username:password@www.qwer.com:8080/path/path1/../path2/./path3?query=pppppp');
console.log(uriInstance.path); // /path/path1/../path2/./path3
let uriInstance1 = uriInstance.normalize();
console.log(uriInstance1.path); // /path/path2/path3


文章转载自:​​https://developer.harmonyos.com/cn/docs/documentation/doc-references-V3/js-apis-uri-0000001477981477-V3?catalogVersion=V3#ZH-CN_TOPIC_0000001477981477__导入模块​

已于2023-4-11 16:56:28修改
收藏
回复
举报
回复
    相关推荐