1# @ohos.convertxml (xml转换JavaScript) 2 3本模块提供转换xml文本为JavaScript对象的功能。 4 5> **说明:** 6> 7> 本模块首批接口从API version 8开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 8 9 10## 导入模块 11 12```ts 13import { convertxml } from '@kit.ArkTS'; 14``` 15 16## ConvertXML 17 18### convertToJSObject<sup>9+</sup> 19 20convertToJSObject(xml: string, options?: ConvertOptions) : Object 21 22转换xml文本为JavaScript对象。 23 24**原子化服务API**:从API version 11 开始,该接口支持在原子化服务中使用。 25 26**系统能力:** SystemCapability.Utils.Lang 27 28**参数:** 29 30| 参数名 | 类型 | 必填 | 说明 | 31| ------- | --------------------------------- | ---- | --------------- | 32| xml | string | 是 | 传入的xml文本。 | 33| options | [ConvertOptions](#convertoptions) | 否 | 转换选项 , 默认值是ConvertOptions对象 , 由其中各个属性的默认值组成。 | 34 35**返回值:** 36 37| 类型 | 说明 | 38| ------ | ---------------------------- | 39| Object | 处理后返回的JavaScript对象。 | 40 41**错误码:** 42 43以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[语言基础类库错误码](errorcode-utils.md)。 44 45| 错误码ID | 错误信息 | 46| -------- | -------- | 47| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. | 48| 10200002 | Invalid xml string. | 49 50**示例:** 51 52```ts 53try { 54 let xml = 55 '<?xml version="1.0" encoding="utf-8"?>' + 56 '<note importance="high" logged="true">' + 57 ' <title>Happy</title>' + 58 ' <todo>Work</todo>' + 59 ' <todo>Play</todo>' + 60 '</note>'; 61 let conv = new convertxml.ConvertXML() 62 let options: convertxml.ConvertOptions = { 63 trim: false, declarationKey: "_declaration", 64 instructionKey: "_instruction", attributesKey: "_attributes", 65 textKey: "_text", cdataKey: "_cdata", doctypeKey: "_doctype", 66 commentKey: "_comment", parentKey: "_parent", typeKey: "_type", 67 nameKey: "_name", elementsKey: "_elements" 68 } 69 let result = JSON.stringify(conv.convertToJSObject(xml, options)); 70 console.log(result); 71} catch (e) { 72 console.log((e as Object).toString()); 73} 74// 输出(宽泛型) 75// {"_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"}]}]}]} 76``` 77 78### convert<sup>(deprecated)</sup> 79 80convert(xml: string, options?: ConvertOptions) : Object 81 82转换xml文本为JavaScript对象。 83 84> **说明:** 85> 86> 从API version 8开始支持,从API version 9开始废弃,建议使用[convertToJSObject<sup>9+</sup>](#converttojsobject9)替代。 87 88**系统能力:** SystemCapability.Utils.Lang 89 90**参数:** 91 92| 参数名 | 类型 | 必填 | 说明 | 93| ------- | --------------------------------- | ---- | --------------- | 94| xml | string | 是 | 传入的xml文本。 | 95| options | [ConvertOptions](#convertoptions) | 否 | 转换选项 , 默认值是ConvertOptions对象 , 由其中各个属性的默认值组成。 | 96 97**返回值:** 98 99| 类型 | 说明 | 100| ------ | ---------------------------- | 101| Object | 处理后返回的JavaScript对象。 | 102 103**示例:** 104 105```ts 106let xml = 107 '<?xml version="1.0" encoding="utf-8"?>' + 108 '<note importance="high" logged="true">' + 109 ' <title>Happy</title>' + 110 ' <todo>Work</todo>' + 111 ' <todo>Play</todo>' + 112 '</note>'; 113let conv = new convertxml.ConvertXML(); 114let options: convertxml.ConvertOptions = {trim : false, declarationKey:"_declaration", 115 instructionKey : "_instruction", attributesKey : "_attributes", 116 textKey : "_text", cdataKey:"_cdata", doctypeKey : "_doctype", 117 commentKey : "_comment", parentKey : "_parent", typeKey : "_type", 118 nameKey : "_name", elementsKey : "_elements"} 119let result = JSON.stringify(conv.convert(xml, options)); 120console.log(result); 121// 输出(宽泛型) 122// {"_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"}]}]}]} 123``` 124 125## ConvertOptions 126 127转换选项。 128 129**原子化服务API**:从API version 11 开始,该接口支持在原子化服务中使用。 130 131**系统能力:** SystemCapability.Utils.Lang 132 133| 名称 | 类型 | 必填 | 说明 | 134| ----------------- | -------- | ---- | ----------------------------------------------------------- | 135| trim | boolean | 是 | 是否修剪位于文本前后的空白字符。 | 136| ignoreDeclaration | boolean | 否 | 是否忽略xml写入声明指示,默认false。 | 137| ignoreInstruction | boolean | 否 | 是否忽略xml的写入处理指令,默认false。 | 138| ignoreAttributes | boolean | 否 | 是否忽略元素的属性信息,默认false。 | 139| ignoreComment | boolean | 否 | 是否忽略元素的注释信息,默认false。 | 140| ignoreCDATA | boolean | 否 | 是否忽略元素的CDATA信息,默认false。 | 141| ignoreDoctype | boolean | 否 | 是否忽略元素的Doctype信息,默认false。 | 142| ignoreText | boolean | 否 | 是否忽略元素的文本信息,默认false。 | 143| declarationKey | string | 是 | 用于输出对象中declaration的属性键的名称。 | 144| instructionKey | string | 是 | 用于输出对象中instruction的属性键的名称。 | 145| attributesKey | string | 是 | 用于输出对象中attributes的属性键的名称。 | 146| textKey | string | 是 | 用于输出对象中text的属性键的名称。 | 147| cdataKey | string | 是 | 用于输出对象中cdata的属性键的名称 | 148| doctypeKey | string | 是 | 用于输出对象中doctype的属性键的名称。 | 149| commentKey | string | 是 | 用于输出对象中comment的属性键的名称。 | 150| parentKey | string | 是 | 用于输出对象中parent的属性键的名称。 | 151| typeKey | string | 是 | 用于输出对象中type的属性键的名称。 | 152| nameKey | string | 是 | 用于输出对象中name的属性键的名称。 | 153| elementsKey | string | 是 | 用于输出对象中elements的属性键的名称。 |