# @ohos.xml (XML Parsing and Generation)
The **XML** module provides a series of APIs for converting XML text into JavaScript objects and generating and parsing XML files.
> **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
```
import xml from '@ohos.xml';
```
## XmlSerializer
**XmlSerializer** provides APIs to generate an XML file.
### constructor
constructor(buffer: ArrayBuffer | DataView, encoding?: string)
A constructor used to create an **XmlSerializer** instance.
**System capability**: SystemCapability.Utils.Lang
**Parameters**
| Name | Type | Mandatory| Description |
| -------- | --------------------------------- | ---- | ------------------------------------------------ |
| buffer | ArrayBuffer \| DataView | Yes | **ArrayBuffer** or **DataView** for storing the XML information to set.|
| encoding | string | No | Encoding format. The default value is **'utf-8'** (the only format currently supported). |
**Example**
```ts
let arrayBuffer = new ArrayBuffer(2048);
let thatSer = new xml.XmlSerializer(arrayBuffer, "utf-8");
thatSer.setDeclaration();
let result = '';
let view = new Uint8Array(arrayBuffer);
let view1 = "";
for (let i = 0; i < result.length; ++i) {
view1 = view1 + String.fromCodePoint(view[i]);
}
console.log(view1) //
```
### setAttributes
setAttributes(name: string, value: string): void
Sets an attribute.
**System capability**: SystemCapability.Utils.Lang
**Parameters**
| Name| Type | Mandatory| Description |
| ------ | ------ | ---- | --------------- |
| name | string | Yes | Key of the attribute. |
| value | string | Yes | Value of the attribute.|
**Example**
```ts
const MY_MAX = 2048;
let arrayBuffer = new ArrayBuffer(MY_MAX);
let thatSer = new xml.XmlSerializer(arrayBuffer);
thatSer.startElement("note");
thatSer.setAttributes("importance1", "high1");
thatSer.endElement();
let result = '';
let view = new Uint8Array(arrayBuffer);
let view1 = "";
for (let i = 0; i < result.length; ++i) {
view1 = view1 + String.fromCodePoint(view[i]);
}
console.log(view1) //
```
### addEmptyElement
addEmptyElement(name: string): void
Adds an empty element.
**System capability**: SystemCapability.Utils.Lang
**Parameters**
| Name| Type | Mandatory| Description |
| ------ | ------ | ---- | ------------------ |
| name | string | Yes | Name of the empty element to add.|
**Example**
```ts
const MY_MAX = 2048;
let arrayBuffer = new ArrayBuffer(MY_MAX);
let thatSer = new xml.XmlSerializer(arrayBuffer);
thatSer.addEmptyElement("d");
let result = '';
let view = new Uint8Array(arrayBuffer);
let view1 = "";
for (let i = 0; i < result.length; ++i) {
view1 = view1 + String.fromCodePoint(view[i]);
}
console.log(view1) //
```
### setDeclaration
setDeclaration(): void
Sets a file declaration with encoding.
**System capability**: SystemCapability.Utils.Lang
**Example**
```ts
const MY_MAX = 2048;
let arrayBuffer = new ArrayBuffer(MY_MAX);
let thatSer = new xml.XmlSerializer(arrayBuffer);
thatSer.setDeclaration();
thatSer.setNamespace("h", "http://www.w3.org/TR/html4/");
thatSer.startElement("note");
thatSer.endElement();
let result = '\r\n';
let view = new Uint8Array(arrayBuffer);
let view1 = "";
for (let i = 0; i < result.length; ++i) {
view1 = view1 + String.fromCodePoint(view[i]);
}
console.log(view1)
//
//
```
### startElement
startElement(name: string): void
Writes the start tag based on the given element name.
**System capability**: SystemCapability.Utils.Lang
**Parameters**
| Name| Type | Mandatory| Description |
| ------ | ------ | ---- | ------------------ |
| name | string | Yes | Name of the element.|
**Example**
```ts
const MY_MAX = 2048;
let arrayBuffer = new ArrayBuffer(MY_MAX);
let thatSer = new xml.XmlSerializer(arrayBuffer);
thatSer.setDeclaration();
thatSer.setNamespace("h", "http://www.w3.org/TR/html4/");
thatSer.startElement("note");
thatSer.endElement();
let result = '\r\n';
let view = new Uint8Array(arrayBuffer);
let view1 = "";
for (let i = 0; i < result.length; ++i) {
view1 = view1 + String.fromCodePoint(view[i]);
}
console.log(JSON.stringify(view1)) // \r\n
```
### endElement
endElement(): void
Writes the end tag of the element.
**System capability**: SystemCapability.Utils.Lang
**Example**
```ts
const MY_MAX = 2048;
let arrayBuffer = new ArrayBuffer(MY_MAX);
let thatSer = new xml.XmlSerializer(arrayBuffer);
thatSer.setDeclaration();
thatSer.setNamespace("h", "http://www.w3.org/TR/html4/");
thatSer.startElement("note");
thatSer.endElement();
let result = '\r\n';
let view = new Uint8Array(arrayBuffer);
let view1 = "";
for (let i = 0; i < result.length; ++i) {
view1 = view1 + String.fromCodePoint(view[i]);
}
console.log(JSON.stringify(view1)) // \r\n
```
### setNamespace
setNamespace(prefix: string, namespace: string): void
Sets the namespace for an element tag.
**System capability**: SystemCapability.Utils.Lang
**Parameters**
| Name | Type | Mandatory| Description |
| --------- | ------ | ---- | ------------------------------ |
| prefix | string | Yes | Prefix of the element and its child elements. |
| namespace | string | Yes | Namespace to set.|
**Example**
```ts
const MY_MAX = 2048;
let arrayBuffer = new ArrayBuffer(MY_MAX);
let thatSer = new xml.XmlSerializer(arrayBuffer);
thatSer.setDeclaration();
thatSer.setNamespace("h", "http://www.w3.org/TR/html4/");
thatSer.startElement("note");
thatSer.endElement();
let result = '\r\n';
let view = new Uint8Array(arrayBuffer);
let view1 = "";
for (let i = 0; i < result.length; ++i) {
view1 = view1 + String.fromCodePoint(view[i]);
}
console.log(JSON.stringify(view1)) // \r\n
```
### setComment
setComment(text: string): void
Sets a comment.
**System capability**: SystemCapability.Utils.Lang
**Parameters**
| Name| Type | Mandatory| Description |
| ------ | ------ | ---- | -------------------- |
| text | string | Yes | Comment to set.|
**Example**
```ts
const MY_MAX = 2048;
let arrayBuffer = new ArrayBuffer(MY_MAX);
let thatSer = new xml.XmlSerializer(arrayBuffer);
thatSer.setComment("Hello, World!");
let result = '';
let view = new Uint8Array(arrayBuffer);
let view1 = "";
for (let i = 0; i < result.length; ++i) {
view1 = view1 + String.fromCodePoint(view[i]);
}
console.log(view1) //
```
### setCDATA
setCDATA(text: string): void
Sets CDATA data.
**System capability**: SystemCapability.Utils.Lang
**Parameters**
| Name| Type | Mandatory| Description |
| ------ | ------ | ---- | ----------------- |
| text | string | Yes | CDATA data to set.|
**Example**
```ts
const MY_MAX = 2048;
let arrayBuffer = new ArrayBuffer(MY_MAX);
let thatSer = new xml.XmlSerializer(arrayBuffer);
thatSer.setCDATA('root SYSTEM')
let result = '';
let view = new Uint8Array(arrayBuffer);
let view1 = "";
for (let i = 0; i < result.length; ++i) {
view1 = view1 + String.fromCodePoint(view[i]);
}
console.log(view1) //
```
### setText
setText(text: string): void
Sets a tag value.
**System capability**: SystemCapability.Utils.Lang
**Parameters**
| Name| Type | Mandatory| Description |
| ------ | ------ | ---- | ---------------- |
| text | string | Yes | Tag value to set, which is the content of the **text** attribute.|
**Example**
```ts
const MY_MAX = 2048;
let arrayBuffer = new ArrayBuffer(MY_MAX);
let thatSer = new xml.XmlSerializer(arrayBuffer);
thatSer.startElement("note");
thatSer.setAttributes("importance", "high");
thatSer.setText("Happy1");
thatSer.endElement();
let result = 'Happy1';
let view = new Uint8Array(arrayBuffer);
let view1 = "";
for (let i = 0; i < result.length; ++i) {
view1 = view1 + String.fromCodePoint(view[i]);
}
console.log(view1) // Happy1
```
### setDocType
setDocType(text: string): void
Sets a document type.
**System capability**: SystemCapability.Utils.Lang
**Parameters**
| Name| Type | Mandatory| Description |
| ------ | ------ | ---- | ------------------- |
| text | string | Yes | Content of **DocType** to set.|
**Example**
```ts
const MY_MAX = 2048;
let arrayBuffer = new ArrayBuffer(MY_MAX);
let thatSer = new xml.XmlSerializer(arrayBuffer);
thatSer.setDocType('root SYSTEM "http://www.test.org/test.dtd"');
let result = '';
let view = new Uint8Array(arrayBuffer);
let view1 = "";
for (let i = 0; i < result.length; ++i) {
view1 = view1 + String.fromCodePoint(view[i]);
}
console.log(view1) //
```
## XmlPullParser
Implements XML file parsing.
### constructor
constructor(buffer: ArrayBuffer | DataView, encoding?: string)
Creates and returns an **XmlPullParser** object.
**System capability**: SystemCapability.Utils.Lang
**Parameters**
| Name | Type | Mandatory| Description |
| -------- | --------------------------------- | ---- | ------------------------------------------ |
| buffer | ArrayBuffer \| DataView | Yes | XML text information to be parsed.|
| encoding | string | No | Encoding format. The default value is **'utf-8'** (the only format currently supported). |
**Example**
```ts
import util from '@ohos.util';
let strXml =
'' +
']>' +
'' +
' ' +
' ' +
' John & Hans' +
' Happy' +
' Happy' +
' Work' +
' Play' +
' ' +
' ' +
' ' +
' ' +
' Apples' +
' Bananas' +
' ' +
' ' +
'';
let textEncoder = new util.TextEncoder();
let arrbuffer = textEncoder.encodeInto(strXml);
let that = new xml.XmlPullParser(arrbuffer.buffer, 'UTF-8');
let str1 = '';
function func1(name: string, value: string) {
str1 += name + value;
return true;
}
let options: xml.ParseOptions = {supportDoctype:true, ignoreNameSpace:true, tagValueCallbackFunction:func1}
that.parse(options);
console.log(str1)
// note []note funcrion matchwo(a,6){return 1;} Hello, World! companyJohn amp;amp; Hanscompany titleHappytitle titleHappytitle lensWorklens lensPlaylens go there abba h:table h:tr h:tdApplesh:td h:tdBananash:td h:tr h:tablenote
```
### parse
parse(option: ParseOptions): void
Parses XML information.
**System capability**: SystemCapability.Utils.Lang
**Parameters**
| Name| Type | Mandatory| Description |
| ------ | ----------------------------- | ---- | -------------------------------- |
| option | [ParseOptions](#parseoptions) | Yes | Options for controlling and obtaining the parsed information.|
**Example**
```ts
import util from '@ohos.util';
let strXml =
'' +
'' +
' Happy' +
' Work' +
' Play' +
'';
let textEncoder = new util.TextEncoder();
let arrbuffer = textEncoder.encodeInto(strXml);
let that = new xml.XmlPullParser(arrbuffer.buffer);
let str = "";
function func(key: xml.EventType, value: xml.ParseInfo) {
str += 'key:' + key + ' value:' + value.getDepth() + ' ';
return true; // Determines whether to continually parse, which is used to continue or terminate parsing.
}
let options: xml.ParseOptions = {supportDoctype:true, ignoreNameSpace:true, tokenValueCallbackFunction:func}
that.parse(options);
console.log(str);
// Output:
// key:0 value:0 key:2 value:1 key:10 value:1 key:2 value:2 key:4 value:2 key:3 value:2 key:10 value:1 key:2 value:2 key:4 value:2 key:3 value:2 key:10 value:1 key:2 value:2 key:4 value:2 key:3 value:2 key:3 value:1 key:1 value:0
// Note:
// key indicates the event type, and value indicates the parsing depth. You can learn the specific parsed event based on EVENTTYPE. In this example, key: value means:
// 0(START_DOCUMENT):0 (START_DOCUMENT is being parsed, and the depth is 0), 2(START_TAG):1 (START_TAG is being parsed, and the depth is 1), 10(WHITESPACE):1 (WHITESPACE is being parsed, and the depth is 1), 2(START_TAG):2 (START_TAG is being parsed, and the depth is 2), ...
```
## ParseOptions
Defines the XML parsing options.
**System capability**: SystemCapability.Utils.Lang
| Name | Type | Mandatory| Description |
| ------------------------------ | ------------------------------------------------------------ | ---- | --------------------------------------- |
| supportDoctype | boolean | No | Whether to ignore the document type. The default value is **false**, indicating that the document type is parsed.|
| ignoreNameSpace | boolean | No | Whether to ignore the namespace. The default value is **false**, indicating that the namespace is parsed.|
| tagValueCallbackFunction | (name: string, value: string) => boolean | No | Callback used to return **tagValue** for parsing the tag and tag value. The default value is **null**, indicating that the tag and tag value are not parsed. |
| attributeValueCallbackFunction | (name: string, value: string) => boolean | No | Callback used to return **attributeValue** for parsing the attribute and attribute value. The default value is **null**, indicating that the attribute and attribute value are not parsed.|
| tokenValueCallbackFunction | (eventType: [EventType](#eventtype), value: [ParseInfo](#parseinfo)) => boolean | No | Callback used to return **tokenValue** for parsing the [EventType](#eventtype) and [ParseInfo](#parseinfo) attributes. The default value is **null**, indicating that the **EventType** and **ParseInfo** attribute are not parsed.|
## ParseInfo
Provides APIs to manage the parsed XML information.
### getColumnNumber
getColumnNumber(): number
Obtains the column line number, starting from 1.
**System capability**: SystemCapability.Utils.Lang
**Return value**
| Type | Description |
| ------ | -------------- |
| number | Column number obtained.|
**Example**
```ts
import util from '@ohos.util';
let strXml =
'' +
'' +
' Happy' +
' Work' +
' Play' +
'';
let textEncoder = new util.TextEncoder();
let arrbuffer = textEncoder.encodeInto(strXml);
let that = new xml.XmlPullParser(arrbuffer.buffer);
let str = "";
function func(key: xml.EventType, value: xml.ParseInfo) {
str += 'key:' + key + ' value:' + value.getColumnNumber() + ' ';
return true; // Determines whether to continually parse, which is used to continue or terminate parsing.
}
let options: xml.ParseOptions = {supportDoctype:true, ignoreNameSpace:true, tokenValueCallbackFunction:func}
that.parse(options);
console.log(str);
// Output:
// key:0 value:1 key:2 value:77 key:10 value:81 key:2 value:88 key:4 value:93 key:3 value:101 key:10 value:105 key:2 value:111 key:4 value:115 key:3 value:122 key:10 value:126 key:2 value:132 key:4 value:136 key:3 value:143 key:3 value:150 key:1 value:299
```
### getDepth
getDepth(): number
Obtains the depth of this element.
**System capability**: SystemCapability.Utils.Lang
**Return value**
| Type | Description |
| ------ | -------------------- |
| number | Depth obtained.|
**Example**
```ts
import util from '@ohos.util';
let strXml =
'' +
'' +
' Happy' +
' Work' +
' Play' +
'';
let textEncoder = new util.TextEncoder();
let arrbuffer = textEncoder.encodeInto(strXml);
let that = new xml.XmlPullParser(arrbuffer.buffer);
let str = "";
function func(key: xml.EventType, value: xml.ParseInfo) {
str += 'key:' + key + ' value:' + value.getDepth() + ' ';
return true; // Determines whether to continually parse, which is used to continue or terminate parsing.
}
let options: xml.ParseOptions = {supportDoctype:true, ignoreNameSpace:true, tokenValueCallbackFunction:func}
that.parse(options);
console.log(str);
// Output:
// key:0 value:0 key:2 value:1 key:10 value:1 key:2 value:2 key:4 value:2 key:3 value:2 key:10 value:1 key:2 value:2 key:4 value:2 key:3 value:2 key:10 value:1 key:2 value:2 key:4 value:2 key:3 value:2 key:3 value:1 key:1 value:0
// Note:
// key indicates the event type, and value indicates the parsing depth. You can learn the specific parsed event based on EVENTTYPE. In this example, key: value means:
// 0(START_DOCUMENT):0 (START_DOCUMENT is being parsed, and the depth is 0), 2(START_TAG):1 (START_TAG is being parsed, and the depth is 1), 10(WHITESPACE):1 (WHITESPACE is being parsed, and the depth is 1), 2(START_TAG):2 (START_TAG is being parsed, and the depth is 2), ...
```
### getLineNumber
getLineNumber(): number
Obtains the current line number, starting from 1.
**System capability**: SystemCapability.Utils.Lang
**Return value**
| Type | Description |
| ------ | -------------- |
| number | Line number obtained.|
**Example**
```ts
import util from '@ohos.util';
let strXml =
'' +
'' +
' Happy' +
' Work' +
' Play' +
'';
let textEncoder = new util.TextEncoder();
let arrbuffer = textEncoder.encodeInto(strXml);
let that = new xml.XmlPullParser(arrbuffer.buffer);
let str = "";
function func(key: xml.EventType, value: xml.ParseInfo) {
str += 'key:' + key + ' value:' + value.getLineNumber() + ' ';
return true; // Determines whether to continually parse, which is used to continue or terminate parsing.
}
let options: xml.ParseOptions = {supportDoctype:true, ignoreNameSpace:true, tokenValueCallbackFunction:func}
that.parse(options);
console.log(str);
// Output:
// key:0 value:1 key:2 value:1 key:10 value:1 key:2 value:1 key:4 value:1 key:3 value:1 key:10 value:1 key:2 value:1 key:4 value:1 key:3 value:1 key:10 value:1 key:2 value:1 key:4 value:1 key:3 value:1 key:3 value:1 key:1 value:1
```
### getName
getName(): string
Obtains the name of this element.
**System capability**: SystemCapability.Utils.Lang
**Return value**
| Type | Description |
| ------ | ------------------ |
| string | Element name obtained.|
**Example**
```ts
import util from '@ohos.util';
let strXml =
'' +
'' +
' Happy' +
' Work' +
' Play' +
'';
let textEncoder = new util.TextEncoder();
let arrbuffer = textEncoder.encodeInto(strXml);
let that = new xml.XmlPullParser(arrbuffer.buffer);
let str = "";
function func(key: xml.EventType, value: xml.ParseInfo) {
str += 'key:' + key + ' value:' + value.getName() + ' ';
return true; // Determines whether to continually parse, which is used to continue or terminate parsing.
}
let options: xml.ParseOptions = {supportDoctype:true, ignoreNameSpace:true, tokenValueCallbackFunction:func}
that.parse(options);
console.log(str);
// Output:
// key:0 value: key:2 value:note key:10 value: key:2 value:title key:4 value: key:3 value:title key:10 value: key:2 value:todo key:4 value: key:3 value:todo key:10 value: key:2 value:todo key:4 value: key:3 value:todo key:3 value:note key:1 value:
```
### getNamespace
getNamespace(): string
Obtains the namespace of this element.
**System capability**: SystemCapability.Utils.Lang
**Return value**
| Type | Description |
| ------ | ------------------------ |
| string | Namespace obtained.|
**Example**
```ts
import util from '@ohos.util';
let strXml =
'' +
'' +
' Happy' +
' Work' +
' Play' +
'';
let textEncoder = new util.TextEncoder();
let arrbuffer = textEncoder.encodeInto(strXml);
let that = new xml.XmlPullParser(arrbuffer.buffer);
let str = "";
function func(key: xml.EventType, value: xml.ParseInfo) {
str += 'key:' + key + ' value:' + value.getNamespace() + ' ';
return true; // Determines whether to continually parse, which is used to continue or terminate parsing.
}
let options: xml.ParseOptions = {supportDoctype:true, ignoreNameSpace:true, tokenValueCallbackFunction:func}
that.parse(options);
console.log(str);
// Output:
// key:0 value: key:2 value: key:10 value: key:2 value: key:4 value: key:3 value: key:10 value: key:2 value: key:4 value: key:3 value: key:10 value: key:2 value: key:4 value: key:3 value: key:3 value: key:1 value:
```
### getPrefix
getPrefix(): string
Obtains the prefix of this element.
**System capability**: SystemCapability.Utils.Lang
**Return value**
| Type | Description |
| ------ | ------------------ |
| string | Element prefix obtained.|
**Example**
```ts
import util from '@ohos.util';
let strXml =
'' +
'' +
' Happy' +
' Work' +
' Play' +
'';
let textEncoder = new util.TextEncoder();
let arrbuffer = textEncoder.encodeInto(strXml);
let that = new xml.XmlPullParser(arrbuffer.buffer);
let str = "";
function func(key: xml.EventType, value: xml.ParseInfo) {
str += 'key:' + key + ' value:' + value.getPrefix() + ' ';
return true; // Determines whether to continually parse, which is used to continue or terminate parsing.
}
let options: xml.ParseOptions = {supportDoctype:true, ignoreNameSpace:true, tokenValueCallbackFunction:func}
that.parse(options);
console.log(str);
// Output:
// key:0 value: key:2 value: key:10 value: key:2 value: key:4 value: key:3 value: key:10 value: key:2 value: key:4 value: key:3 value: key:10 value: key:2 value: key:4 value: key:3 value: key:3 value: key:1 value:
```
### getText
getText(): string
Obtains the text of the current event.
**System capability**: SystemCapability.Utils.Lang
**Return value**
| Type | Description |
| ------ | ------------------------ |
| string | Text content obtained.|
**Example**
```ts
import util from '@ohos.util';
let strXml =
'' +
'' +
' Happy' +
' Work' +
' Play' +
'';
let textEncoder = new util.TextEncoder();
let arrbuffer = textEncoder.encodeInto(strXml);
let that = new xml.XmlPullParser(arrbuffer.buffer);
let str = "";
function func(key: xml.EventType, value: xml.ParseInfo) {
str += ' key:' + key + ' value:' + value.getText() + ' ';
return true; // Determines whether to continually parse, which is used to continue or terminate parsing.
}
let options: xml.ParseOptions = {supportDoctype:true, ignoreNameSpace:true, tokenValueCallbackFunction:func}
that.parse(options);
console.log(str);
// Output:
// key:0 value: key:2 value: key:10 value: key:2 value: key:4 value:Happy key:3 value: key:10 value: key:2 value: key:4 value:Work key:3 value: key:10 value: key:2 value: key:4 value:Play key:3 value: key:3 value: key:1 value:
```
### isEmptyElementTag
isEmptyElementTag(): boolean
Checks whether the current element is empty.
**System capability**: SystemCapability.Utils.Lang
**Return value**
| Type | Description |
| ------- | ---------------------------- |
| boolean | Returns **true** if the element is empty; returns **false** otherwise.|
**Example**
```ts
import util from '@ohos.util';
let strXml =
'' +
'' +
' Happy' +
' Work' +
' Play' +
'';
let textEncoder = new util.TextEncoder();
let arrbuffer = textEncoder.encodeInto(strXml);
let that = new xml.XmlPullParser(arrbuffer.buffer);
let str = "";
function func(key: xml.EventType, value: xml.ParseInfo) {
str += 'key:' + key + ' value:' + value.isEmptyElementTag() + ' ';
return true; // Determines whether to continually parse, which is used to continue or terminate parsing.
}
let options: xml.ParseOptions = {supportDoctype:true, ignoreNameSpace:true, tokenValueCallbackFunction:func}
that.parse(options);
console.log(str);
// Output:
// key:0 value:false key:2 value:false key:10 value:false key:2 value:false key:4 value:false key:3 value:false key:10 value:false key:2 value:false key:4 value:false key:3 value:false key:10 value:false key:2 value:false key:4 value:false key:3 value:false key:3 value:false key:1 value:false
```
### isWhitespace
isWhitespace(): boolean
Checks whether the current text event contains only whitespace characters.
**System capability**: SystemCapability.Utils.Lang
**Return value**
| Type | Description |
| ------- | -------------------------------------- |
| boolean | Returns **true** if the text event contains only whitespace characters; returns **false** otherwise.|
**Example**
```ts
import util from '@ohos.util';
let strXml =
'' +
'' +
' Happy' +
' Work' +
' Play' +
'';
let textEncoder = new util.TextEncoder();
let arrbuffer = textEncoder.encodeInto(strXml);
let that = new xml.XmlPullParser(arrbuffer.buffer);
let str = "";
function func(key: xml.EventType, value: xml.ParseInfo) {
str += 'key:' + key + ' value:' + value.isWhitespace() + ' ';
return true; // Determines whether to continually parse, which is used to continue or terminate parsing.
}
let options: xml.ParseOptions = {supportDoctype:true, ignoreNameSpace:true, tokenValueCallbackFunction:func}
that.parse(options);
console.log(str);
// Output:
// key:0 value:true key:2 value:false key:10 value:true key:2 value:true key:4 value:false key:3 value:true key:10 value:true key:2 value:true key:4 value:false key:3 value:true key:10 value:true key:2 value:true key:4 value:false key:3 value:true key:3 value:true key:1 value:true
```
### getAttributeCount
getAttributeCount(): number
Obtains the number of attributes for the current start tag.
**System capability**: SystemCapability.Utils.Lang
**Return value**
| Type | Description |
| ------ | ---------------------- |
| number | Number of attributes obtained.|
**Example**
```ts
import util from '@ohos.util';
let strXml =
'' +
'' +
' Happy' +
' Work' +
' Play' +
'';
let textEncoder = new util.TextEncoder();
let arrbuffer = textEncoder.encodeInto(strXml);
let that = new xml.XmlPullParser(arrbuffer.buffer);
let str = "";
function func(key: xml.EventType, value: xml.ParseInfo) {
str += 'key:' + key + ' value:' + value.getAttributeCount() + ' ';
return true; // Determines whether to continually parse, which is used to continue or terminate parsing.
}
let options: xml.ParseOptions = {supportDoctype:true, ignoreNameSpace:true, tokenValueCallbackFunction:func}
that.parse(options);
console.log(str);
// Output:
// key:0 value:0 key:2 value:2 key:10 value:0 key:2 value:0 key:4 value:0 key:3 value:0 key:10 value:0 key:2 value:0 key:4 value:0 key:3 value:0 key:10 value:0 key:2 value:0 key:4 value:0 key:3 value:0 key:3 value:0 key:1 value:0
```
## EventType
Enumerates the event types.
**System capability**: SystemCapability.Utils.Lang
| Name | Value | Description |
| ---------------- | ---- | --------------------- |
| START_DOCUMENT | 0 | Start document event. |
| END_DOCUMENT | 1 | End document event. |
| START_TAG | 2 | Start tag event. |
| END_TAG | 3 | End tag event. |
| TEXT | 4 | Text event. |
| CDSECT | 5 | CDATA section event. |
| COMMENT | 6 | XML comment event. |
| DOCDECL | 7 | XML document type declaration event.|
| INSTRUCTION | 8 | XML processing instruction event.|
| ENTITY_REFERENCE | 9 | Entity reference event. |
| WHITESPACE | 10 | Whitespace character event. |