1# ArkTS子系统Changelog 2 3## cl.arkts.1 convertXml模块未支持parentKey属性的行为变更 4 5**访问级别** 6 7公开接口 8 9**变更原因** 10 11convertXml模块未实现parentKey属性,生成的object中不具有parentKey属性的值。 12 13**变更影响** 14 15该变更为不兼容性变更。 16 17变更前: 18convertToJSObject接口对xml字符串的入参进行解析时,未支持设置parentKey属性的值。 19 20变更后: 21convertToJSObject接口对xml字符串的入参进行解析时,可以支持正确设置parentKey属性的值。 22 23**起始API Level** 24 25API 9 26 27**变更发生版本** 28 29从OpenHarmony 5.0.1.1 版本开始。 30 31**变更的接口/组件** 32ConvertXML模块下的接口: 33 34convertToJSObject(xml: string, options?: ConvertOptions): Object; 35 36**适配指导** 37 38变更:convertToJSObject接口对xml字符串的入参进行解析时,可以支持正确设置parentKey属性的值。 39 40```ts 41import { convertxml } from '@kit.ArkTS'; 42 43let xml = 44 '<?xml version="1.0" encoding="utf-8"?>' + 45 '<note importance="high" logged="true">' + 46 ' <title>Happy</title>' + 47 ' <todo>Work</todo>' + 48 ' <todo>Play</todo>' + 49 '</note>'; 50let conv = new convertxml.ConvertXML() 51let options: convertxml.ConvertOptions = { 52 trim: false, 53 declarationKey: "_declaration", 54 instructionKey: "_instruction", 55 attributesKey: "_attributes", 56 textKey: "_text", 57 cdataKey: "_cdata", 58 doctypeKey: "_doctype", 59 commentKey: "_comment", 60 parentKey: "_parent", 61 typeKey: "_type", 62 nameKey: "_name", 63 elementsKey: "_elements" 64} 65let result: ESObject = conv.convertToJSObject(xml, options); 66 67// 变更前: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"}]}]}]} 68 69// 变更后:result的值实际为(新增parentKey属性): {"_declaration":{"_attributes":{"version":"1.0","encoding":"utf-8"}},"_elements":[{"_type":"element","_name":"note","_attributes":{"importance":"high","logged":"true"},"_elements":[{"_type":"element","_name":"title","_parent":"note","_elements":[{"_type":"text","_text":"Happy"}]},{"_type":"element","_name":"todo","_parent":"note","_elements":[{"_type":"text","_text":"Work"}]},{"_type":"element","_name":"todo","_parent":"note","_elements":[{"_type":"text","_text":"Play"}]}]}]} 70 71// 对于开发者使用场景来说,不影响开发者使用。 72// 获取title标签的parentKey属性的方法是:result1["_elements"][0]["_elements"][0]._parent 73// 变更前:获取title标签的parentKey属性为:undefined 74// 变更后:获取title标签的parentKey属性为实际值:note 75``` 76 77## cl.arkts.2 util.TextEncoder模块utf-16le和utf-16be编码数据行为变更 78 79**访问级别** 80 81公开接口 82 83**变更原因** 84 85TextEncoder编码器在编码格式设置为utf-16le和utf-16be时,获得的编码数据相反。 86utf-16le为小端编码格式,编码出数据应该符合小端编码数据,但是实际表现为大端编码数据。 87utf-16be为大端编码格式,编码出数据应该符合大端编码数据,但是实际表现为小端编码数据。 88这两种编码格式所编码出的数据行为与标准定义不符合,需要修复此问题。 89 90**变更影响** 91 92该变更为不兼容性变更。 93 94变更前: 95utf-16le为小端编码格式,编码出数据应该符合小端编码数据,但是实际表现为大端编码数据。 96utf-16be为大端编码格式,编码出数据应该符合大端编码数据,但是实际表现为小端编码数据。 97 98变更后: 99utf-16le为小端编码格式,实际表现为小端编码数据。 100utf-16be为大端编码格式,实际表现为大端编码数据。 101 102**起始API Level** 103 104API 9 105 106**变更发生版本** 107 108从OpenHarmony 5.0.1.1 版本开始。 109 110**变更的接口/组件** 111util.TextEncoder模块的接口: 112 113encodeInto(input?: string): Uint8Array; 114encodeIntoUint8Array(input: string, dest: Uint8Array): EncodeIntoUint8ArrayInfo; 115 116**适配指导** 117 118变更描述: 修复TextEncoder编码器在编码格式设置为utf-16le和utf-16be时获取编码数据与定义不相符的BUG。 119 120encodeInto接口的表现: 121 122```ts 123import { util } from '@kit.ArkTS'; 124 125let encoderUtf16Le = new util.TextEncoder("utf-16le"); 126let encoderUtf16Be = new util.TextEncoder("utf-16be"); 127 128// 变更前: 129// let u8_le = encoderUtf16Le.encodeInto('abcdefg'); // u8_le: 0,97,0,98,0,99,0,100,0,101,0,102,0,103 130// let u8_be = encoderUtf16Be.encodeInto('abcdefg'); // u8_be: 97,0,98,0,99,0,100,0,101,0,102,0,103,0 131 132 133// 变更后: 134let u8_le = encoderUtf16Le.encodeInto('abcdefg'); // u8_le: 97,0,98,0,99,0,100,0,101,0,102,0,103,0 135let u8_be = encoderUtf16Be.encodeInto('abcdefg'); // u8_be: 0,97,0,98,0,99,0,100,0,101,0,102,0,103 136``` 137 138encodeIntoUint8Array接口的表现: 139 140```ts 141import { util } from '@kit.ArkTS'; 142 143let encoderUtf16Le = new util.TextEncoder("utf-16le"); 144let encoderUtf16Be = new util.TextEncoder("utf-16be"); 145 146// 变更前: 147// let dest_le = new Uint8Array(14); 148// let dest_be = new Uint8Array(14); 149// let res_le = encoderUtf16Le.encodeIntoUint8Array('abcdefg', dest_le); // dest_le: 0,97,0,98,0,99,0,100,0,101,0,102,0,103 150// let res_be = encoderUtf16Be.encodeIntoUint8Array('abcdefg', dest_be); // dest_be: 97,0,98,0,99,0,100,0,101,0,102,0,103,0 151 152// 变更后: 153let dest_le = new Uint8Array(14); 154let dest_be = new Uint8Array(14); 155let res_le = encoderUtf16Le.encodeIntoUint8Array('abcdefg', dest_le); // dest_le: 97,0,98,0,99,0,100,0,101,0,102,0,103,0 156let res_be = encoderUtf16Be.encodeIntoUint8Array('abcdefg', dest_be); // dest_be: 0,97,0,98,0,99,0,100,0,101,0,102,0,103 157``` 158 159## cl.arkui.3 通用属性backgroundEffect在modifier中radius参数单位修改 160 161**访问级别** 162 163公开接口 164 165**变更原因** 166 167 直接使用backgroundEffect时对应的模糊参数radius单位为vp。通过modifier或者CAPI使用时,单位为px。现将单位同一为vp。 168 169**变更影响** 170 171该变更为不兼容变更。 172 173变更前:backgroundEffect通过modifier使用时单位为px。<br/> 174 175 176变更后:backgroundEffect通过modifier使用时单位为vp。<br/> 177 178 179 180 181**起始API Level** 182 183API 12 184 185**变更发生版本** 186 187从OpenHarmony 5.0.1.1 版本开始。 188 189**变更的接口/组件** 190 191backgroundEffect 192 193**适配指导** 194 195在modifier中使用px2vp方法把radius参数转换为vp。 196 197```ts 198 199import { CommonModifier } from '@kit.ArkUI'; 200 201class ColumnModifier extends CommonModifier { 202 public radius: number = 0; 203 applyNormalAttribute(instance: CommonAttribute): void { 204 instance.backgroundEffect({ radius: this.radius }) 205 } 206} 207 208@Entry 209@Component 210struct Index { 211 @State testSize: number = 200; 212 @State modifier:ColumnModifier = new ColumnModifier(); 213 onPageShow(): void { 214 // 变更前 215 // this.modifier.radius = 10; 216 // 变更后适配 217 this.modifier.radius = px2vp(10); 218 } 219 build() { 220 Column() { 221 Stack() { 222 Image($r('app.media.test')).width(this.testSize).height(this.testSize) 223 Column().width(this.testSize).height(this.testSize).attributeModifier(this.modifier) 224 }.width('100%') 225 } 226 } 227} 228``` 229