• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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