diff --git a/zh-cn/application-dev/reference/apis-arkts/js-apis-xml.md b/zh-cn/application-dev/reference/apis-arkts/js-apis-xml.md
index c83f5dd5d7762b2eafeabf6bd50bf7a693892a47..63a5585b37772357a60fc16928d08f673770c725 100644
--- a/zh-cn/application-dev/reference/apis-arkts/js-apis-xml.md
+++ b/zh-cn/application-dev/reference/apis-arkts/js-apis-xml.md
@@ -94,7 +94,7 @@ thatSer.setAttributes("importance", "high");
thatSer.endElement();
let uint8 = new Uint8Array(arrayBuffer);
let result = util.TextDecoder.create().decodeToString(uint8);
-console.log(result); //
+console.info("result: ", result); // result: result:
```
### addEmptyElement
@@ -135,7 +135,7 @@ let thatSer = new xml.XmlSerializer(arrayBuffer);
thatSer.addEmptyElement("d");
let uint8 = new Uint8Array(arrayBuffer);
let result = util.TextDecoder.create().decodeToString(uint8);
-console.log(result); //
+console.info("result: ", result); // result:
```
### setDeclaration
@@ -158,8 +158,8 @@ let thatSer = new xml.XmlSerializer(arrayBuffer);
thatSer.setDeclaration();
let uint8 = new Uint8Array(arrayBuffer);
let result = util.TextDecoder.create().decodeToString(uint8);
-console.log(result);
-//
+console.info("result: ", result);
+// result:
```
### startElement
@@ -204,8 +204,8 @@ thatSer.setText("Happy");
thatSer.endElement();
let uint8 = new Uint8Array(arrayBuffer);
let result = util.TextDecoder.create().decodeToString(uint8);
-console.log(result);
-// Happy
+console.info("result: ", result);
+// result: Happy
```
### endElement
@@ -234,8 +234,8 @@ thatSer.setText("Happy");
thatSer.endElement();
let uint8 = new Uint8Array(arrayBuffer);
let result = util.TextDecoder.create().decodeToString(uint8);
-console.log(result);
-// Happy
+console.info("result: ", result);
+// result: Happy
```
### setNamespace
@@ -279,8 +279,8 @@ thatSer.startElement("note");
thatSer.endElement();
let uint8 = new Uint8Array(arrayBuffer);
let result = util.TextDecoder.create().decodeToString(uint8);
-console.log(result);
-//
+console.info("result: ", result);
+// result:
```
### setComment
@@ -317,7 +317,7 @@ let thatSer = new xml.XmlSerializer(arrayBuffer);
thatSer.setComment("Hello, World!");
let uint8 = new Uint8Array(arrayBuffer);
let result = util.TextDecoder.create().decodeToString(uint8);
-console.log(result); //
+console.info("result: ", result); // result:
```
### setCDATA
@@ -358,7 +358,7 @@ let thatSer = new xml.XmlSerializer(arrayBuffer);
thatSer.setCDATA('root SYSTEM')
let uint8 = new Uint8Array(arrayBuffer);
let result = util.TextDecoder.create().decodeToString(uint8);
-console.log(result); //
+console.info("result: ", result); // result:
```
### setText
@@ -398,7 +398,7 @@ thatSer.setText("Happy");
thatSer.endElement();
let uint8 = new Uint8Array(arrayBuffer);
let result = util.TextDecoder.create().decodeToString(uint8);
-console.log(result); // Happy
+console.info("result: ", result); // result: Happy
```
### setDocType
@@ -435,7 +435,484 @@ let thatSer = new xml.XmlSerializer(arrayBuffer);
thatSer.setDocType('root SYSTEM "http://www.test.org/test.dtd"');
let uint8 = new Uint8Array(arrayBuffer);
let result = util.TextDecoder.create().decodeToString(uint8);
-console.log(result); //
+console.info("result: ", result); // result:
+```
+
+## XmlDynamicSerializer20+
+
+XmlDynamicSerializer类用于生成XML字符串。当无法确定XML内容长度时,推荐使用该类。
+
+> **说明:**
+>
+> 使用该类构造的对象无需自行创建ArrayBuffer,可以不断添加XML元素,最终序列化结果字符串长度上限为100000字节。
+
+### constructor20+
+
+constructor(encoding?: string)
+
+XmlDynamicSerializer的构造函数。
+
+**原子化服务API**:从API version 20开始,该接口支持在原子化服务中使用。
+
+**系统能力:** SystemCapability.Utils.Lang
+
+**参数:**
+
+| 参数名 | 类型 | 必填 | 说明 |
+| -------- | --------------------------------- | ---- | ------------------------------------------------ |
+| encoding | string | 否 | 编码格式,默认'utf-8'(目前仅支持'utf-8')。 |
+
+**错误码:**
+
+以下错误码的详细介绍请参见[语言基础类库错误码](errorcode-utils.md)。
+
+| 错误码ID | 错误信息 |
+| -------- | -------- |
+| 10200066 | Incorrect encoding format, only support utf-8. |
+
+**示例:**
+
+```ts
+let serializer = new xml.XmlDynamicSerializer('utf-8');
+```
+
+### getOutput20+
+
+getOutput(): ArrayBuffer
+
+返回XML字符串的ArrayBuffer。
+
+**原子化服务API**:从API version 20开始,该接口支持在原子化服务中使用。
+
+**系统能力:** SystemCapability.Utils.Lang
+
+**返回值:**
+
+| 类型 | 说明 |
+| ------ | -------------------- |
+| ArrayBuffer | 用于接收写入XML信息的ArrayBuffer内存。 |
+
+**示例:**
+
+```ts
+import { util } from '@kit.ArkTS';
+
+let serializer = new xml.XmlDynamicSerializer('utf-8');
+serializer.startElement("note");
+serializer.setText("Happy");
+serializer.endElement();
+let arr = serializer.getOutput();
+let uint8 = new Uint8Array(arr);
+let result = util.TextDecoder.create().decodeToString(uint8);
+console.info("result: ", result); // result: Happy
+```
+
+### setAttributes20+
+
+setAttributes(name: string, value: string): void
+
+写入元素的属性和属性值。
+
+> **说明:**
+>
+> 该接口对所添加数据不做标准XML校验处理,请确保所添加的数据符合标准XML规范。比如不允许添加数字开头的属性名称以及添加多个同名的属性名称。
+
+**原子化服务API**:从API version 20开始,该接口支持在原子化服务中使用。
+
+**系统能力:** SystemCapability.Utils.Lang
+
+**参数:**
+
+| 参数名 | 类型 | 必填 | 说明 |
+| ------ | ------ | ---- | --------------- |
+| name | string | 是 | 属性。所组成的XML长度不能超过100000字节。|
+| value | string | 是 | 属性值。所组成的XML长度不能超过100000字节。|
+
+**错误码:**
+
+以下错误码的详细介绍请参见[语言基础类库错误码](errorcode-utils.md)。
+
+| 错误码ID | 错误信息 |
+| -------- | -------- |
+| 10200062 | The cumulative length of xml has exceeded the upper limit 100000. |
+| 10200063 | illegal position for xml. |
+| 10200064 | Cannot be an empty string. |
+
+**示例:**
+
+```ts
+import { util } from '@kit.ArkTS';
+
+let serializer = new xml.XmlDynamicSerializer('utf-8');
+serializer.startElement("note");
+serializer.setAttributes("importance", "high");
+serializer.endElement();
+let arrayBuffer = serializer.getOutput();
+let uint8 = new Uint8Array(arrayBuffer);
+let result = util.TextDecoder.create().decodeToString(uint8);
+console.info("result: ", result); // result:
+```
+
+### addEmptyElement20+
+
+addEmptyElement(name: string): void
+
+写入一个空元素。
+
+> **说明:**
+>
+> 该接口对所添加数据不做标准XML校验处理,请确保所添加的数据符合标准XML规范。比如不允许添加数字开头的元素名称。
+
+**原子化服务API**:从API version 20开始,该接口支持在原子化服务中使用。
+
+**系统能力:** SystemCapability.Utils.Lang
+
+**参数:**
+
+| 参数名 | 类型 | 必填 | 说明 |
+| ------ | ------ | ---- | ------------------ |
+| name | string | 是 | 该空元素的元素名。所组成的XML长度不能超过100000字节。|
+
+**错误码:**
+
+以下错误码的详细介绍请参见[语言基础类库错误码](errorcode-utils.md)。
+
+| 错误码ID | 错误信息 |
+| -------- | -------- |
+| 10200062 | The cumulative length of xml has exceeded the upper limit 100000. |
+| 10200064 | Cannot be an empty string. |
+
+**示例:**
+
+```ts
+import { util } from '@kit.ArkTS';
+
+let serializer = new xml.XmlDynamicSerializer('utf-8');
+serializer.addEmptyElement("d");
+let arrayBuffer = serializer.getOutput();
+let uint8 = new Uint8Array(arrayBuffer);
+let result = util.TextDecoder.create().decodeToString(uint8);
+console.info("result: ", result); // result:
+```
+
+### setDeclaration20+
+
+setDeclaration(): void
+
+编写带有编码的文件声明。
+
+**原子化服务API**:从API version 20开始,该接口支持在原子化服务中使用。
+
+**系统能力:** SystemCapability.Utils.Lang
+
+**错误码:**
+
+以下错误码的详细介绍请参见[语言基础类库错误码](errorcode-utils.md)。
+
+| 错误码ID | 错误信息 |
+| -------- | -------- |
+| 10200062 | The cumulative length of xml has exceeded the upper limit 100000. |
+| 10200063 | illegal position for xml. |
+
+**示例:**
+
+```ts
+import { util } from '@kit.ArkTS';
+
+let serializer = new xml.XmlDynamicSerializer('utf-8');
+serializer.setDeclaration();
+let arrayBuffer = serializer.getOutput();
+let uint8 = new Uint8Array(arrayBuffer);
+let result = util.TextDecoder.create().decodeToString(uint8);
+console.info("result: ", result); // result:
+```
+
+### startElement20+
+
+startElement(name: string): void
+
+写入元素开始标记。
+
+> **说明:**
+>
+>- 调用该接口后须调用[endElement](#endelement-1)写入元素结束标记,以确保节点正确闭合。
+>
+>- 该接口对所添加数据不做标准XML校验处理,请确保所添加的数据符合标准XML规范。比如不允许添加数字开头的元素名称。
+
+**原子化服务API**:从API version 20开始,该接口支持在原子化服务中使用。
+
+**系统能力:** SystemCapability.Utils.Lang
+
+**参数:**
+
+| 参数名 | 类型 | 必填 | 说明 |
+| ------ | ------ | ---- | ------------------ |
+| name | string | 是 | 当前元素的元素名。所组成的XML长度不能超过100000字节。|
+
+**错误码:**
+
+以下错误码的详细介绍请参见[语言基础类库错误码](errorcode-utils.md)。
+
+| 错误码ID | 错误信息 |
+| -------- | -------- |
+| 10200062 | The cumulative length of xml has exceeded the upper limit 100000. |
+| 10200064 | Cannot be an empty string. |
+
+**示例:**
+
+```ts
+import { util } from '@kit.ArkTS';
+
+let serializer = new xml.XmlDynamicSerializer('utf-8');
+serializer.startElement("note");
+serializer.setText("Happy");
+serializer.endElement();
+let arrayBuffer = serializer.getOutput();
+let uint8 = new Uint8Array(arrayBuffer);
+let result = util.TextDecoder.create().decodeToString(uint8);
+console.info("result: ", result); // result: Happy
+```
+
+### endElement20+
+
+endElement(): void
+
+写入元素结束标记。
+
+> **说明:**
+>
+> 调用该接口前必须先调用[startElement](#startelement-1)接口写入元素开始标记。
+
+**原子化服务API**:从API version 20开始,该接口支持在原子化服务中使用。
+
+**系统能力:** SystemCapability.Utils.Lang
+
+**错误码:**
+
+以下错误码的详细介绍请参见[语言基础类库错误码](errorcode-utils.md)。
+
+| 错误码ID | 错误信息 |
+| -------- | -------- |
+| 10200062 | The cumulative length of xml has exceeded the upper limit 100000. |
+| 10200065 | There is no match between the startElement and the endElement. |
+
+**示例:**
+
+```ts
+import { util } from '@kit.ArkTS';
+
+let serializer = new xml.XmlDynamicSerializer('utf-8');
+serializer.startElement("note");
+serializer.setText("Happy");
+serializer.endElement();
+let arrayBuffer = serializer.getOutput();
+let uint8 = new Uint8Array(arrayBuffer);
+let result = util.TextDecoder.create().decodeToString(uint8);
+console.info("result: ", result); // result: Happy
+```
+
+### setNamespace20+
+
+setNamespace(prefix: string, namespace: string): void
+
+写入当前元素标记的命名空间。
+
+> **说明:**
+>
+> 该接口对所添加数据不做标准XML校验处理,请确保所添加的数据符合标准XML规范。比如不允许添加数字开头的前缀以及对同一个元素设置多个命名空间。
+
+**原子化服务API**:从API version 20开始,该接口支持在原子化服务中使用。
+
+**系统能力:** SystemCapability.Utils.Lang
+
+**参数:**
+
+| 参数名 | 类型 | 必填 | 说明 |
+| --------- | ------ | ---- | ------------------------------ |
+| prefix | string | 是 | 当前元素及其子元素的前缀。所组成的XML长度不能超过100000字节。|
+| namespace | string | 是 | 当前元素及其子元素的命名空间。所组成的XML长度不能超过100000字节。|
+
+**错误码:**
+
+以下错误码的详细介绍请参见[语言基础类库错误码](errorcode-utils.md)。
+
+| 错误码ID | 错误信息 |
+| -------- | -------- |
+| 10200062 | The cumulative length of xml has exceeded the upper limit 100000. |
+| 10200064 | Cannot be an empty string. |
+
+**示例:**
+
+```ts
+import { util } from '@kit.ArkTS';
+
+let serializer = new xml.XmlDynamicSerializer('utf-8');
+serializer.setNamespace("h", "http://www.w3.org/TR/html4/");
+serializer.startElement("note");
+serializer.endElement();
+let arrayBuffer = serializer.getOutput();
+let uint8 = new Uint8Array(arrayBuffer);
+let result = util.TextDecoder.create().decodeToString(uint8);
+console.info("result: ", result); // result:
+```
+
+### setComment20+
+
+setComment(text: string): void
+
+写入注释内容。
+
+**原子化服务API**:从API version 20开始,该接口支持在原子化服务中使用。
+
+**系统能力:** SystemCapability.Utils.Lang
+
+**参数:**
+
+| 参数名 | 类型 | 必填 | 说明 |
+| ------ | ------ | ---- | -------------------- |
+| text | string | 是 | 当前元素的注释内容。所组成的XML长度不能超过100000字节。|
+
+**错误码:**
+
+以下错误码的详细介绍请参见[语言基础类库错误码](errorcode-utils.md)。
+
+| 错误码ID | 错误信息 |
+| -------- | -------- |
+| 10200062 | The cumulative length of xml has exceeded the upper limit 100000. |
+| 10200064 | Cannot be an empty string. |
+
+**示例:**
+
+```ts
+import { util } from '@kit.ArkTS';
+
+let serializer = new xml.XmlDynamicSerializer('utf-8');
+serializer.setComment("Hello, World!");
+let arrayBuffer = serializer.getOutput();
+let uint8 = new Uint8Array(arrayBuffer);
+let result = util.TextDecoder.create().decodeToString(uint8);
+console.info("result: ", result); // result:
+```
+
+### setCdata20+
+
+setCdata(text: string): void
+
+提供在CDATA标签中添加数据的能力,所生成的CDATA标签结构为:"\"。
+
+> **说明:**
+>
+> 该接口对所添加数据不做标准XML校验处理,请确保所添加的数据符合标准XML规范。比如不允许在CDATA标签中添加包含"\]\]\>"字符串的数据。
+
+**原子化服务API**:从API version 20开始,该接口支持在原子化服务中使用。
+
+**系统能力:** SystemCapability.Utils.Lang
+
+**参数:**
+
+| 参数名 | 类型 | 必填 | 说明 |
+| ------ | ------ | ---- | ----------------- |
+| text | string | 是 | CDATA属性的内容。所组成的XML长度不能超过100000字节。|
+
+**错误码:**
+
+以下错误码的详细介绍请参见[语言基础类库错误码](errorcode-utils.md)。
+
+| 错误码ID | 错误信息 |
+| -------- | -------- |
+| 10200062 | The cumulative length of xml has exceeded the upper limit 100000. |
+| 10200064 | Cannot be an empty string. |
+
+**示例:**
+
+```ts
+import { util } from '@kit.ArkTS';
+
+let serializer = new xml.XmlDynamicSerializer('utf-8');
+serializer.setCdata('root SYSTEM')
+let arrayBuffer = serializer.getOutput();
+let uint8 = new Uint8Array(arrayBuffer);
+let result = util.TextDecoder.create().decodeToString(uint8);
+console.info("result: ", result); // result:
+```
+
+### setText20+
+
+setText(text: string): void
+
+写入标签值。
+
+**原子化服务API**:从API version 20开始,该接口支持在原子化服务中使用。
+
+**系统能力:** SystemCapability.Utils.Lang
+
+**参数:**
+
+| 参数名 | 类型 | 必填 | 说明 |
+| ------ | ------ | ---- | ---------------- |
+| text | string | 是 | 标签值。所组成的XML长度不能超过100000字节。|
+
+**错误码:**
+
+以下错误码的详细介绍请参见[语言基础类库错误码](errorcode-utils.md)。
+
+| 错误码ID | 错误信息 |
+| -------- | -------- |
+| 10200062 | The cumulative length of xml has exceeded the upper limit 100000. |
+| 10200064 | Cannot be an empty string. |
+
+**示例:**
+
+```ts
+import { util } from '@kit.ArkTS';
+
+let serializer = new xml.XmlDynamicSerializer('utf-8');
+serializer.startElement("note");
+serializer.setAttributes("importance", "high");
+serializer.setText("Happy");
+serializer.endElement();
+let arrayBuffer = serializer.getOutput();
+let uint8 = new Uint8Array(arrayBuffer);
+let result = util.TextDecoder.create().decodeToString(uint8);
+console.info("result: ", result); // result: Happy
+```
+
+### setDocType20+
+
+setDocType(text: string): void
+
+写入文档类型。
+
+**原子化服务API**:从API version 20开始,该接口支持在原子化服务中使用。
+
+**系统能力:** SystemCapability.Utils.Lang
+
+**参数:**
+
+| 参数名 | 类型 | 必填 | 说明 |
+| ------ | ------ | ---- | ------------------- |
+| text | string | 是 | DocType属性的内容。所组成的XML长度不能超过100000字节。 |
+
+**错误码:**
+
+以下错误码的详细介绍请参见[语言基础类库错误码](errorcode-utils.md)。
+
+| 错误码ID | 错误信息 |
+| -------- | -------- |
+| 10200062 | The cumulative length of xml has exceeded the upper limit 100000. |
+| 10200064 | Cannot be an empty string. |
+
+**示例:**
+
+```ts
+import { util } from '@kit.ArkTS';
+
+let serializer = new xml.XmlDynamicSerializer('utf-8');
+serializer.setDocType('root SYSTEM "http://www.test.org/test.dtd"');
+let arrayBuffer = serializer.getOutput();
+let uint8 = new Uint8Array(arrayBuffer);
+let result = util.TextDecoder.create().decodeToString(uint8);
+console.info("result: ", result); // result:
```
## XmlPullParser