# @ohos.convertxml (XML-to-JavaScript Conversion)
The **convertxml** module provides APIs for converting XML text into JavaScript objects.
> **NOTE**
>
> The initial APIs of this module are supported since API version 8. Newly added APIs will be marked with a superscript to indicate their earliest API version.
## Modules to Import
```ts
import { convertxml } from '@kit.ArkTS';
```
## ConvertXML
### fastConvertToJSObject14+
fastConvertToJSObject(xml: string, options?: ConvertOptions) : Object
Converts an XML text into a JavaScript object.
> **NOTE**
>
> In Windows, a newline is usually represented by the carriage return (CR) followed by the line feed (LF). However, the object obtained by calling this API uses only the LF to indicate a new line.
**Atomic service API**: This API can be used in atomic services since API version 14.
**System capability**: SystemCapability.Utils.Lang
**Parameters**
| Name | Type | Mandatory| Description |
| ------- | --------------------------------- | ---- | --------------- |
| xml | string | Yes | XML text to convert. If the XML text contains the ampersand (&), replace it with the entity reference **\&**.|
| options | [ConvertOptions](#convertoptions) | No | Options for conversion. The default value is a **ConvertOptions** object, which consists of the default values of the attributes in the object.|
**Return value**
| Type | Description |
| ------ | ---------------------------- |
| Object | JavaScript object.|
**Error codes**
For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Utils Error Codes](errorcode-utils.md).
| ID| Error Message|
| -------- | -------- |
| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. |
| 10200002 | Invalid xml string. |
**Example**
```ts
try {
let xml =
'' +
'' +
' Hello\r\nWorld' +
' ' +
'';
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 = JSON.stringify(conv.fastConvertToJSObject(xml, options));
console.log(result);
} catch (e) {
console.log((e as Object).toString());
}
// Output (non-compact)
// {"_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":"Hello\nWorld"}]},{"_type":"element","_name":"todo","_elements":[{"_type":"cdata","_cdata":"Work\n"}]}]}]}
```
### convertToJSObject(deprecated)
convertToJSObject(xml: string, options?: ConvertOptions) : Object
Converts an XML text into a JavaScript object.
> **NOTE**
>
> This API is supported since API version 9 and deprecated since API version 14. You are advised to use [fastConvertToJSObject14+](#fastconverttojsobject14) instead.
**Atomic service API**: This API can be used in atomic services since API version 11.
**System capability**: SystemCapability.Utils.Lang
**Parameters**
| Name | Type | Mandatory| Description |
| ------- | --------------------------------- | ---- | --------------- |
| xml | string | Yes | XML text to convert. If the XML text contains the ampersand (&), replace it with the entity reference **\&**.|
| options | [ConvertOptions](#convertoptions) | No | Options for conversion. The default value is a **ConvertOptions** object, which consists of the default values of the attributes in the object.|
**Return value**
| Type | Description |
| ------ | ---------------------------- |
| Object | JavaScript object.|
**Error codes**
For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Utils Error Codes](errorcode-utils.md).
| ID| Error Message|
| -------- | -------- |
| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. |
| 10200002 | Invalid xml string. |
**Example**
```ts
try {
let xml =
'' +
'' +
' Happy' +
' Work' +
' Play' +
'';
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 = JSON.stringify(conv.convertToJSObject(xml, options));
console.log(result);
} catch (e) {
console.log((e as Object).toString());
}
// Output (non-compact)
// {"_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"}]}]}]}
```
### convert(deprecated)
convert(xml: string, options?: ConvertOptions) : Object
Converts an XML text into a JavaScript object.
> **NOTE**
>
> This API is supported since API version 8 and deprecated since API version 9. You are advised to use [fastConvertToJSObject14+](#fastconverttojsobject14) instead.
**System capability**: SystemCapability.Utils.Lang
**Parameters**
| Name | Type | Mandatory| Description |
| ------- | --------------------------------- | ---- | --------------- |
| xml | string | Yes | XML text to convert.|
| options | [ConvertOptions](#convertoptions) | No | Options for conversion. The default value is a **ConvertOptions** object, which consists of the default values of the attributes in the object. |
**Return value**
| Type | Description |
| ------ | ---------------------------- |
| Object | JavaScript object.|
**Example**
```ts
let xml =
'' +
'' +
' Happy' +
' Work' +
' Play' +
'';
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 = JSON.stringify(conv.convert(xml, options));
console.log(result);
// Output (non-compact)
// {"_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"}]}]}]}
```
## ConvertOptions
Options for conversion.
**Atomic service API**: This API can be used in atomic services since API version 11.
**System capability**: SystemCapability.Utils.Lang
| Name | Type| Mandatory| Description |
| ----------------- | -------- | ---- | ----------------------------------------------------------- |
| trim | boolean | Yes | Whether to trim the whitespace characters before and after the text. |
| ignoreDeclaration | boolean | No | Whether to ignore the XML declaration. The default value is **false**. |
| ignoreInstruction | boolean | No | Whether to ignore the XML processing instruction. The default value is **false**. |
| ignoreAttributes | boolean | No | Whether to ignore the element's attribute information. The default value is **false**. |
| ignoreComment | boolean | No | Whether to ignore element comments. The default value is **false**. |
| ignoreCDATA | boolean | No | Whether to ignore the element's CDATA information. The default value is **false**. |
| ignoreDoctype | boolean | No | Whether to ignore the element's Doctype information. The default value is **false**. |
| ignoreText | boolean | No | Whether to ignore the element's text information. The default value is **false**. |
| declarationKey | string | Yes | Name of the attribute key for **declaration** in the output object.|
| instructionKey | string | Yes | Name of the attribute key for **instruction** in the output object.|
| attributesKey | string | Yes | Name of the attribute key for **attributes** in the output object. |
| textKey | string | Yes | Name of the attribute key for **text** in the output object. |
| cdataKey | string | Yes | Name of the attribute key for **cdata** in the output object. |
| doctypeKey | string | Yes | Name of the attribute key for **doctype** in the output object. |
| commentKey | string | Yes | Name of the attribute key for **comment** in the output object. |
| parentKey | string | Yes | Name of the attribute key for **parent** in the output object. |
| typeKey | string | Yes | Name of the attribute key for **type** in the output object. |
| nameKey | string | Yes | Name of the attribute key for **name** in the output object. |
| elementsKey | string | Yes | Name of the attribute key for **elements** in the output object. |