HarmonyOS API:语言基础类库
版本: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 | 否 | 转换选项。 |
返回值:
类型 | 说明 |
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 | 否 | 转换选项。 |
返回值:
类型 | 说明 |
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