1# @ohos.convertxml (xml转换JavaScript) 2<!--Kit: ArkTS--> 3<!--Subsystem: CommonLibrary--> 4<!--Owner: @xliu-huanwei; @shilei123; @huanghello--> 5<!--Designer: @yuanyao14--> 6<!--Tester: @kirl75; @zsw_zhushiwei--> 7<!--Adviser: @ge-yafang--> 8 9本模块提供转换xml文本为JavaScript对象的功能。 10 11> **说明:** 12> 13> 本模块首批接口从API version 8开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 14 15 16## 导入模块 17 18```ts 19import { convertxml } from '@kit.ArkTS'; 20``` 21 22## ConvertXML 23 24### fastConvertToJSObject<sup>14+</sup> 25 26fastConvertToJSObject(xml: string, options?: ConvertOptions) : Object 27 28转换xml文本为Object类型对象。 29 30> **说明:** 31> 32> 在Windows环境中,通常以回车符(CR)和换行符(LF)一对字符来表示换行。fastConvertToJSObject接口转换后的对象以换行符(LF)表示换行。 33 34**原子化服务API**:从API version 14开始,该接口支持在原子化服务中使用。 35 36**系统能力:** SystemCapability.Utils.Lang 37 38**参数:** 39 40| 参数名 | 类型 | 必填 | 说明 | 41| ------- | --------------------------------- | ---- | --------------- | 42| xml | string | 是 | xml文本,若包含“&”字符,请使用实体引用“\&”替换。| 43| options | [ConvertOptions](#convertoptions) | 否 | 转换选项,默认值是ConvertOptions对象,由其中各个属性的默认值组成。| 44 45**返回值:** 46 47| 类型 | 说明 | 48| ------ | ---------------------------- | 49| Object | 转换后的JavaScript对象。 | 50 51**错误码:** 52 53以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[语言基础类库错误码](errorcode-utils.md)。 54 55| 错误码ID | 错误信息 | 56| -------- | -------- | 57| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. | 58| 10200002 | Invalid xml string. | 59 60**示例:** 61 62```ts 63try { 64 let xml = 65 '<?xml version="1.0" encoding="utf-8"?>' + 66 '<note importance="high" logged="true">' + 67 ' <title>Hello\r\nWorld</title>' + 68 ' <todo><![CDATA[Work\r\n]]></todo>' + 69 '</note>'; 70 let conv = new convertxml.ConvertXML(); 71 let options: convertxml.ConvertOptions = { 72 trim: false, declarationKey: "_declaration", 73 instructionKey: "_instruction", attributesKey: "_attributes", 74 textKey: "_text", cdataKey: "_cdata", doctypeKey: "_doctype", 75 commentKey: "_comment", parentKey: "_parent", typeKey: "_type", 76 nameKey: "_name", elementsKey: "_elements" 77 } 78 let result = JSON.stringify(conv.fastConvertToJSObject(xml, options)); 79 console.info(result); 80} catch (e) { 81 console.error((e as Object).toString()); 82} 83// 输出(宽泛型) 84// {"_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":"Hello\nWorld"}]},{"_type":"element","_name":"todo","_elements":[{"_type":"cdata","_cdata":"Work\n"}]}]}]} 85``` 86 87### convertToJSObject<sup>(deprecated)</sup> 88 89convertToJSObject(xml: string, options?: ConvertOptions) : Object 90 91转换xml文本为Object类型对象。 92 93> **说明:** 94> 95> 从API version 9开始支持,从API version 14开始废弃,建议使用[fastConvertToJSObject<sup>14+</sup>](#fastconverttojsobject14)替代。 96 97**原子化服务API**:从API version 11开始,该接口支持在原子化服务中使用。 98 99**系统能力:** SystemCapability.Utils.Lang 100 101**参数:** 102 103| 参数名 | 类型 | 必填 | 说明 | 104| ------- | --------------------------------- | ---- | --------------- | 105| xml | string | 是 | 传入的xml文本,若包含“&”字符,请使用实体引用“\&”替换。| 106| options | [ConvertOptions](#convertoptions) | 否 | 转换选项,默认值是ConvertOptions对象,由其中各个属性的默认值组成。 | 107 108**返回值:** 109 110| 类型 | 说明 | 111| ------ | ---------------------------- | 112| Object | 处理后返回的JavaScript对象。 | 113 114**错误码:** 115 116以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[语言基础类库错误码](errorcode-utils.md)。 117 118| 错误码ID | 错误信息 | 119| -------- | -------- | 120| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. | 121| 10200002 | Invalid xml string. | 122 123**示例:** 124 125```ts 126try { 127 let xml = 128 '<?xml version="1.0" encoding="utf-8"?>' + 129 '<note importance="high" logged="true">' + 130 ' <title>Happy</title>' + 131 ' <todo>Work</todo>' + 132 ' <todo>Play</todo>' + 133 '</note>'; 134 let conv = new convertxml.ConvertXML(); 135 let options: convertxml.ConvertOptions = { 136 trim: false, declarationKey: "_declaration", 137 instructionKey: "_instruction", attributesKey: "_attributes", 138 textKey: "_text", cdataKey: "_cdata", doctypeKey: "_doctype", 139 commentKey: "_comment", parentKey: "_parent", typeKey: "_type", 140 nameKey: "_name", elementsKey: "_elements" 141 } 142 let result = JSON.stringify(conv.convertToJSObject(xml, options)); 143 console.info(result); 144} catch (e) { 145 console.error((e as Object).toString()); 146} 147// 输出(宽泛型) 148// {"_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"}]}]}]} 149``` 150 151### convert<sup>(deprecated)</sup> 152 153convert(xml: string, options?: ConvertOptions) : Object 154 155转换xml文本为JavaScript对象。 156 157> **说明:** 158> 159> 从API version 8开始支持,从API version 9开始废弃,建议使用[fastConvertToJSObject<sup>14+</sup>](#fastconverttojsobject14)替代。 160 161**系统能力:** SystemCapability.Utils.Lang 162 163**参数:** 164 165| 参数名 | 类型 | 必填 | 说明 | 166| ------- | --------------------------------- | ---- | --------------- | 167| xml | string | 是 | 传入的xml文本。 | 168| options | [ConvertOptions](#convertoptions) | 否 | 转换选项,默认值是ConvertOptions对象,由其中各个属性的默认值组成。 | 169 170**返回值:** 171 172| 类型 | 说明 | 173| ------ | ---------------------------- | 174| Object | 处理后返回的JavaScript对象。 | 175 176**示例:** 177 178```ts 179let xml = 180 '<?xml version="1.0" encoding="utf-8"?>' + 181 '<note importance="high" logged="true">' + 182 ' <title>Happy</title>' + 183 ' <todo>Work</todo>' + 184 ' <todo>Play</todo>' + 185 '</note>'; 186let conv = new convertxml.ConvertXML(); 187let options: convertxml.ConvertOptions = {trim : false, declarationKey:"_declaration", 188 instructionKey : "_instruction", attributesKey : "_attributes", 189 textKey : "_text", cdataKey:"_cdata", doctypeKey : "_doctype", 190 commentKey : "_comment", parentKey : "_parent", typeKey : "_type", 191 nameKey : "_name", elementsKey : "_elements"} 192let result = JSON.stringify(conv.convert(xml, options)); 193console.info(result); 194// 输出(宽泛型) 195// {"_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"}]}]}]} 196``` 197 198## ConvertOptions 199 200转换选项。 201 202**原子化服务API**:从API version 11开始,该接口支持在原子化服务中使用。 203 204**系统能力:** SystemCapability.Utils.Lang 205 206| 名称 | 类型 | 必填 | 说明 | 207| ----------------- | -------- | ---- | ----------------------------------------------------------- | 208| trim | boolean | 是 | 是否修剪位于文本前后的空白字符,true表示xml文本前后的空白字符将会被修剪,false则表示空白字符会被保留。 | 209| ignoreDeclaration | boolean | 否 | 是否忽略xml写入声明指示,true表示忽略xml写入声明指示,false则相反,默认false。 | 210| ignoreInstruction | boolean | 否 | 是否忽略xml的写入处理指令,true表示忽略xml的写入处理指令,false则相反,默认false。 | 211| ignoreAttributes | boolean | 否 | 是否忽略元素的属性信息,true表示忽略元素的属性信息,false则相反,默认false。 | 212| ignoreComment | boolean | 否 | 是否忽略元素的注释信息,true表示忽略元素的注释信息,false则相反,默认false。 | 213| ignoreCDATA | boolean | 否 | 是否忽略元素的CDATA信息,true表示忽略元素的CDATA信息,false则相反,默认false。 | 214| ignoreDoctype | boolean | 否 | 是否忽略元素的Doctype信息,true表示忽略元素的Doctype信息,false则相反,默认false。 | 215| ignoreText | boolean | 否 | 是否忽略元素的文本信息,true表示忽略元素的文本信息,false则相反,默认false。 | 216| declarationKey | string | 是 | 用于输出对象中declaration的属性键的名称。 | 217| instructionKey | string | 是 | 用于输出对象中instruction的属性键的名称。 | 218| attributesKey | string | 是 | 用于输出对象中attributes的属性键的名称。 | 219| textKey | string | 是 | 用于输出对象中text的属性键的名称。 | 220| cdataKey | string | 是 | 用于输出对象中cdata的属性键的名称 | 221| doctypeKey | string | 是 | 用于输出对象中doctype的属性键的名称。 | 222| commentKey | string | 是 | 用于输出对象中comment的属性键的名称。 | 223| parentKey | string | 是 | 用于输出对象中parent的属性键的名称。 | 224| typeKey | string | 是 | 用于输出对象中type的属性键的名称。 | 225| nameKey | string | 是 | 用于输出对象中name的属性键的名称。 | 226| elementsKey | string | 是 | 用于输出对象中elements的属性键的名称。 |