# ArkTSå系统Changelog ## cl.arkts.1 convertXmlæ¨¡å—æœªæ”¯æŒparentKeyå±žæ€§çš„è¡Œä¸ºå˜æ›´ **访问级别** å…¬å¼€æŽ¥å£ **å˜æ›´åŽŸå› ** convertXmlæ¨¡å—æœªå®žçްparentKey属性,生æˆçš„objectä¸ä¸å…·æœ‰parentKey属性的值。 **å˜æ›´å½±å“** è¯¥å˜æ›´ä¸ºä¸å…¼å®¹æ€§å˜æ›´ã€‚ å˜æ›´å‰ï¼š convertToJSObject接å£å¯¹xmlå—符串的入å‚è¿›è¡Œè§£æžæ—¶ï¼Œæœªæ”¯æŒè®¾ç½®parentKey属性的值。 å˜æ›´åŽï¼š convertToJSObject接å£å¯¹xmlå—符串的入å‚è¿›è¡Œè§£æžæ—¶ï¼Œå¯ä»¥æ”¯æŒæ£ç¡®è®¾ç½®parentKey属性的值。 **èµ·å§‹API Level** API 9 **å˜æ›´å‘生版本** 从OpenHarmony 5.0.1.1 版本开始。 **å˜æ›´çš„æŽ¥å£/组件** ConvertXML模å—下的接å£ï¼š convertToJSObject(xml: string, options?: ConvertOptions): Object; **适酿Œ‡å¯¼** å˜æ›´ï¼šconvertToJSObject接å£å¯¹xmlå—符串的入å‚è¿›è¡Œè§£æžæ—¶ï¼Œå¯ä»¥æ”¯æŒæ£ç¡®è®¾ç½®parentKey属性的值。 ```ts import { convertxml } from '@kit.ArkTS'; 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: convertxml.ConvertOptions = { 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: ESObject = conv.convertToJSObject(xml, options); // å˜æ›´å‰ï¼š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"}]}]}]} // å˜æ›´åŽï¼š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"}]}]}]} // 对于开å‘者使用场景æ¥è¯´ï¼Œä¸å½±å“å¼€å‘者使用。 // 获å–titleæ ‡ç¾çš„parentKey属性的方法是:result1["_elements"][0]["_elements"][0]._parent // å˜æ›´å‰ï¼šèŽ·å–titleæ ‡ç¾çš„parentKey属性为:undefined // å˜æ›´åŽï¼šèŽ·å–titleæ ‡ç¾çš„parentKey属性为实际值:note ``` ## cl.arkts.2 util.TextEncoder模å—utf-16leå’Œutf-16beç¼–ç æ•°æ®è¡Œä¸ºå˜æ›´ **访问级别** å…¬å¼€æŽ¥å£ **å˜æ›´åŽŸå› ** TextEncoderç¼–ç å™¨åœ¨ç¼–ç æ ¼å¼è®¾ç½®ä¸ºutf-16leå’Œutf-16beæ—¶ï¼ŒèŽ·å¾—çš„ç¼–ç æ•°æ®ç›¸å。 utf-16le为å°ç«¯ç¼–ç æ ¼å¼ï¼Œç¼–ç 出数æ®åº”该符åˆå°ç«¯ç¼–ç æ•°æ®ï¼Œä½†æ˜¯å®žé™…è¡¨çŽ°ä¸ºå¤§ç«¯ç¼–ç æ•°æ®ã€‚ utf-16beä¸ºå¤§ç«¯ç¼–ç æ ¼å¼ï¼Œç¼–ç 出数æ®åº”该符åˆå¤§ç«¯ç¼–ç æ•°æ®ï¼Œä½†æ˜¯å®žé™…表现为å°ç«¯ç¼–ç æ•°æ®ã€‚ 这两ç§ç¼–ç æ ¼å¼æ‰€ç¼–ç 出的数æ®è¡Œä¸ºä¸Žæ ‡å‡†å®šä¹‰ä¸ç¬¦åˆï¼Œéœ€è¦ä¿®å¤æ¤é—®é¢˜ã€‚ **å˜æ›´å½±å“** è¯¥å˜æ›´ä¸ºä¸å…¼å®¹æ€§å˜æ›´ã€‚ å˜æ›´å‰ï¼š utf-16le为å°ç«¯ç¼–ç æ ¼å¼ï¼Œç¼–ç 出数æ®åº”该符åˆå°ç«¯ç¼–ç æ•°æ®ï¼Œä½†æ˜¯å®žé™…è¡¨çŽ°ä¸ºå¤§ç«¯ç¼–ç æ•°æ®ã€‚ utf-16beä¸ºå¤§ç«¯ç¼–ç æ ¼å¼ï¼Œç¼–ç 出数æ®åº”该符åˆå¤§ç«¯ç¼–ç æ•°æ®ï¼Œä½†æ˜¯å®žé™…表现为å°ç«¯ç¼–ç æ•°æ®ã€‚ å˜æ›´åŽï¼š utf-16le为å°ç«¯ç¼–ç æ ¼å¼ï¼Œå®žé™…表现为å°ç«¯ç¼–ç æ•°æ®ã€‚ utf-16beä¸ºå¤§ç«¯ç¼–ç æ ¼å¼ï¼Œå®žé™…è¡¨çŽ°ä¸ºå¤§ç«¯ç¼–ç æ•°æ®ã€‚ **èµ·å§‹API Level** API 9 **å˜æ›´å‘生版本** 从OpenHarmony 5.0.1.1 版本开始。 **å˜æ›´çš„æŽ¥å£/组件** util.TextEncoder模å—的接å£ï¼š encodeInto(input?: string): Uint8Array; encodeIntoUint8Array(input: string, dest: Uint8Array): EncodeIntoUint8ArrayInfo; **适酿Œ‡å¯¼** å˜æ›´æè¿°ï¼š ä¿®å¤TextEncoderç¼–ç å™¨åœ¨ç¼–ç æ ¼å¼è®¾ç½®ä¸ºutf-16leå’Œutf-16be时获å–ç¼–ç æ•°æ®ä¸Žå®šä¹‰ä¸ç›¸ç¬¦çš„BUG。 encodeInto接å£çš„表现: ```ts import { util } from '@kit.ArkTS'; let encoderUtf16Le = new util.TextEncoder("utf-16le"); let encoderUtf16Be = new util.TextEncoder("utf-16be"); // å˜æ›´å‰ï¼š // let u8_le = encoderUtf16Le.encodeInto('abcdefg'); // u8_le: 0,97,0,98,0,99,0,100,0,101,0,102,0,103 // let u8_be = encoderUtf16Be.encodeInto('abcdefg'); // u8_be: 97,0,98,0,99,0,100,0,101,0,102,0,103,0 // å˜æ›´åŽï¼š let u8_le = encoderUtf16Le.encodeInto('abcdefg'); // u8_le: 97,0,98,0,99,0,100,0,101,0,102,0,103,0 let u8_be = encoderUtf16Be.encodeInto('abcdefg'); // u8_be: 0,97,0,98,0,99,0,100,0,101,0,102,0,103 ``` encodeIntoUint8Array接å£çš„表现: ```ts import { util } from '@kit.ArkTS'; let encoderUtf16Le = new util.TextEncoder("utf-16le"); let encoderUtf16Be = new util.TextEncoder("utf-16be"); // å˜æ›´å‰ï¼š // let dest_le = new Uint8Array(14); // let dest_be = new Uint8Array(14); // let res_le = encoderUtf16Le.encodeIntoUint8Array('abcdefg', dest_le); // dest_le: 0,97,0,98,0,99,0,100,0,101,0,102,0,103 // let res_be = encoderUtf16Be.encodeIntoUint8Array('abcdefg', dest_be); // dest_be: 97,0,98,0,99,0,100,0,101,0,102,0,103,0 // å˜æ›´åŽï¼š let dest_le = new Uint8Array(14); let dest_be = new Uint8Array(14); let res_le = encoderUtf16Le.encodeIntoUint8Array('abcdefg', dest_le); // dest_le: 97,0,98,0,99,0,100,0,101,0,102,0,103,0 let res_be = encoderUtf16Be.encodeIntoUint8Array('abcdefg', dest_be); // dest_be: 0,97,0,98,0,99,0,100,0,101,0,102,0,103 ``` ## cl.arkui.3 通用属性backgroundEffect在modifierä¸radius傿•°å•ä½ä¿®æ”¹ **访问级别** å…¬å¼€æŽ¥å£ **å˜æ›´åŽŸå› ** 直接使用backgroundEffectæ—¶å¯¹åº”çš„æ¨¡ç³Šå‚æ•°radiuså•ä½ä¸ºvp。通过modifier或者CAPI使用时,å•ä½ä¸ºpx。现将å•ä½åŒä¸€ä¸ºvp。 **å˜æ›´å½±å“** è¯¥å˜æ›´ä¸ºä¸å…¼å®¹å˜æ›´ã€‚ å˜æ›´å‰ï¼šbackgroundEffect通过modifier使用时å•ä½ä¸ºpx。<br/>  å˜æ›´åŽï¼šbackgroundEffect通过modifier使用时å•ä½ä¸ºvp。<br/>  **èµ·å§‹API Level** API 12 **å˜æ›´å‘生版本** 从OpenHarmony 5.0.1.1 版本开始。 **å˜æ›´çš„æŽ¥å£/组件** backgroundEffect **适酿Œ‡å¯¼** 在modifierä¸ä½¿ç”¨px2vp方法把radius傿•°è½¬æ¢ä¸ºvp。 ```ts import { CommonModifier } from '@kit.ArkUI'; class ColumnModifier extends CommonModifier { public radius: number = 0; applyNormalAttribute(instance: CommonAttribute): void { instance.backgroundEffect({ radius: this.radius }) } } @Entry @Component struct Index { @State testSize: number = 200; @State modifier:ColumnModifier = new ColumnModifier(); onPageShow(): void { // å˜æ›´å‰ // this.modifier.radius = 10; // å˜æ›´åŽé€‚é… this.modifier.radius = px2vp(10); } build() { Column() { Stack() { Image($r('app.media.test')).width(this.testSize).height(this.testSize) Column().width(this.testSize).height(this.testSize).attributeModifier(this.modifier) }.width('100%') } } } ```