js-apis-xml.md 28.9 KB
Newer Older
1
# @ohos.xml (xml解析与生成)
Z
zengyawen 已提交
2

zyjhandsome's avatar
zyjhandsome 已提交
3
> **说明:**
Z
zengyawen 已提交
4 5 6 7 8 9
> 本模块首批接口从API version 8开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。


## 导入模块

```
Z
zengyawen 已提交
10
import xml from '@ohos.xml';
Z
zengyawen 已提交
11 12 13 14 15 16 17 18 19 20 21
```

## XmlSerializer


### constructor

constructor(buffer: ArrayBuffer | DataView, encoding?: string)

XmlSerializer的构造函数。

Z
zengyawen 已提交
22 23
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
24 25
**参数:**

26 27 28
| 参数名   | 类型                              | 必填 | 说明                                             |
| -------- | --------------------------------- | ---- | ------------------------------------------------ |
| buffer   | ArrayBuffer \| DataView | 是   | 用于接收写入xml信息的ArrayBuffer或DataView内存。 |
29
| encoding | string                            | 否   | 编码格式 , 默认'utf-8'(目前仅支持'utf-8')。               |
Z
zengyawen 已提交
30

Z
zengyawen 已提交
31 32
**示例:**

J
jiangkai43 已提交
33
```ts
34
let arrayBuffer = new ArrayBuffer(2048);
35
let thatSer = new xml.XmlSerializer(arrayBuffer, "utf-8");
36 37 38 39 40 41 42 43
thatSer.setDeclaration();
let result = '<?xml version="1.0" encoding="utf-8"?>';
let view = new Uint8Array(arrayBuffer);
let view1 = "";
for (let i = 0; i < result.length; ++i) {
    view1 = view1 + String.fromCodePoint(view[i]);
}
console.log(view1) //<?xml version="1.0" encoding="utf-8"?>
Z
zengyawen 已提交
44
```
Z
zengyawen 已提交
45 46 47 48


### setAttributes

Z
zengyawen 已提交
49
setAttributes(name: string, value: string): void
Z
zengyawen 已提交
50

J
jiangkai43 已提交
51
写入元素的属性和属性值。
Z
zengyawen 已提交
52

Z
zengyawen 已提交
53 54
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
55 56
**参数:**

57 58
| 参数名 | 类型   | 必填 | 说明            |
| ------ | ------ | ---- | --------------- |
J
jiangkai43 已提交
59 60
| name   | string | 是   | 属性。   |
| value  | string | 是   | 属性值。 |
Z
zengyawen 已提交
61

Z
zengyawen 已提交
62 63
**示例:**

J
jiangkai43 已提交
64
```ts
65 66 67
const myMAX = 2048;
let arrayBuffer = new ArrayBuffer(myMAX);
let thatSer = new xml.XmlSerializer(arrayBuffer);
小马奔腾 已提交
68
thatSer.startElement("note");
69 70 71 72 73 74 75 76 77
thatSer.setAttributes("importance1", "high1");
thatSer.endElement();
let result = '<note importance1="high1"/>';
let view = new Uint8Array(arrayBuffer);
let view1 = "";
for (let i = 0; i < result.length; ++i) {
    view1 = view1 + String.fromCodePoint(view[i]);
}
console.log(view1) //<note importance1="high1"/>
Z
zengyawen 已提交
78
```
Z
zengyawen 已提交
79 80 81 82 83 84 85 86


### addEmptyElement

addEmptyElement(name: string): void

写入一个空元素。

Z
zengyawen 已提交
87 88
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
89 90
**参数:**

91 92 93
| 参数名 | 类型   | 必填 | 说明               |
| ------ | ------ | ---- | ------------------ |
| name   | string | 是   | 该空元素的元素名。 |
Z
zengyawen 已提交
94

Z
zengyawen 已提交
95 96
**示例:**

J
jiangkai43 已提交
97
```ts
98 99 100 101 102 103 104 105 106 107 108
const myMAX = 2048;
let arrayBuffer = new ArrayBuffer(myMAX);
let thatSer = new xml.XmlSerializer(arrayBuffer);
thatSer.addEmptyElement("d");
let result = '<d/>';
let view = new Uint8Array(arrayBuffer);
let view1 = "";
for (let i = 0; i < result.length; ++i) {
    view1 = view1 + String.fromCodePoint(view[i]);
}
console.log(view1) //<d/>
Z
zengyawen 已提交
109
```
Z
zengyawen 已提交
110 111 112 113 114 115


### setDeclaration

setDeclaration(): void

J
jiangkai43 已提交
116
写入XML文件声明。
Z
zengyawen 已提交
117

Z
zengyawen 已提交
118 119
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
120 121
**示例:**

J
jiangkai43 已提交
122
```ts
123 124 125 126 127 128 129 130 131 132 133 134 135 136
const myMAX = 2048;
let arrayBuffer = new ArrayBuffer(myMAX);
let thatSer = new xml.XmlSerializer(arrayBuffer);
thatSer.setDeclaration();
thatSer.setNamespace("h", "http://www.w3.org/TR/html4/");
thatSer.startElement("note");
thatSer.endElement();
let result = '<?xml version="1.0" encoding="utf-8"?>\r\n<h:note xmlns:h="http://www.w3.org/TR/html4/"/>';
let view = new Uint8Array(arrayBuffer);
let view1 = "";
for (let i = 0; i < result.length; ++i) {
    view1 = view1 + String.fromCodePoint(view[i]);
}
console.log(view1) //<?xml version="1.0" encoding="utf-8"?>
Z
zengyawen 已提交
137
```
Z
zengyawen 已提交
138 139 140 141 142 143


### startElement

startElement(name: string): void

Z
zengyawen 已提交
144
根据给定名称写入元素开始标记。
Z
zengyawen 已提交
145

Z
zengyawen 已提交
146 147
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
148
**参数:**
Z
zengyawen 已提交
149

150 151 152
| 参数名 | 类型   | 必填 | 说明               |
| ------ | ------ | ---- | ------------------ |
| name   | string | 是   | 当前元素的元素名。 |
Z
zengyawen 已提交
153 154 155

**示例:**

J
jiangkai43 已提交
156
```ts
157 158
const myMAX = 2048;
let arrayBuffer = new ArrayBuffer(myMAX);
159
let thatSer = new xml.XmlSerializer(arrayBuffer);
160 161 162 163 164 165 166 167 168 169 170
thatSer.setDeclaration();
thatSer.setNamespace("h", "http://www.w3.org/TR/html4/");
thatSer.startElement("note");
thatSer.endElement();
let result = '<?xml version="1.0" encoding="utf-8"?>\r\n<h:note xmlns:h="http://www.w3.org/TR/html4/"/>';
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)) //<?xml version="1.0" encoding="utf-8"?>\r\n<h:note xmlns:h="http://www.w3.org/TR/html4/"/>
Z
zengyawen 已提交
171
```
Z
zengyawen 已提交
172 173 174 175 176

### endElement

endElement(): void

Z
zengyawen 已提交
177
写入元素结束标记。
Z
zengyawen 已提交
178

Z
zengyawen 已提交
179 180
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
181 182
**示例:**

J
jiangkai43 已提交
183
```ts
184 185 186 187 188 189 190 191 192 193 194 195 196 197
const myMAX = 2048;
let arrayBuffer = new ArrayBuffer(myMAX);
let thatSer = new xml.XmlSerializer(arrayBuffer);
thatSer.setDeclaration();
thatSer.setNamespace("h", "http://www.w3.org/TR/html4/");
thatSer.startElement("note");
thatSer.endElement();
let result = '<?xml version="1.0" encoding="utf-8"?>\r\n<h:note xmlns:h="http://www.w3.org/TR/html4/"/>';
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)) //<?xml version="1.0" encoding="utf-8"?>\r\n<h:note xmlns:h="http://www.w3.org/TR/html4/"/>
Z
zengyawen 已提交
198
```
Z
zengyawen 已提交
199 200 201 202 203 204 205 206


### setNamespace

setNamespace(prefix: string, namespace: string): void

写入当前元素标记的命名空间。

Z
zengyawen 已提交
207 208
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
209 210
**参数:**

211 212 213 214
| 参数名    | 类型   | 必填 | 说明                           |
| --------- | ------ | ---- | ------------------------------ |
| prefix    | string | 是   | 当前元素及其子元素的前缀。     |
| namespace | string | 是   | 当前元素及其子元素的命名空间。 |
Z
zengyawen 已提交
215 216 217

**示例:**

J
jiangkai43 已提交
218
```ts
219 220
const myMAX = 2048;
let arrayBuffer = new ArrayBuffer(myMAX);
221
let thatSer = new xml.XmlSerializer(arrayBuffer);
Z
zengyawen 已提交
222
thatSer.setDeclaration();
223
thatSer.setNamespace("h", "http://www.w3.org/TR/html4/");
Z
zengyawen 已提交
224
thatSer.startElement("note");
225 226 227 228 229 230 231 232
thatSer.endElement();
let result = '<?xml version="1.0" encoding="utf-8"?>\r\n<h:note xmlns:h="http://www.w3.org/TR/html4/"/>';
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)) //<?xml version="1.0" encoding="utf-8"?>\r\n<h:note xmlns:h="http://www.w3.org/TR/html4/"/>
Z
zengyawen 已提交
233
```
Z
zengyawen 已提交
234

Z
zengyawen 已提交
235
### setComment
Z
zengyawen 已提交
236

Z
zengyawen 已提交
237
setComment(text: string): void
Z
zengyawen 已提交
238

J
jiangkai43 已提交
239
写入注释内容。
Z
zengyawen 已提交
240

Z
zengyawen 已提交
241 242
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
243
**参数:**
Z
zengyawen 已提交
244

245 246 247
| 参数名 | 类型   | 必填 | 说明                 |
| ------ | ------ | ---- | -------------------- |
| text   | string | 是   | 当前元素的注释内容。 |
Z
zengyawen 已提交
248 249 250

**示例:**

J
jiangkai43 已提交
251
```ts
252 253
const myMAX = 2048;
let arrayBuffer = new ArrayBuffer(myMAX);
254
let thatSer = new xml.XmlSerializer(arrayBuffer);
255 256 257 258 259 260 261 262
thatSer.setComment("Hello, World!");
let result = '<!--Hello, World!-->';
let view = new Uint8Array(arrayBuffer);
let view1 = "";
for (let i = 0; i < result.length; ++i) {
    view1 = view1 + String.fromCodePoint(view[i]);
}
console.log(view1) //<!--Hello, World!-->'
Z
zengyawen 已提交
263
```
Z
zengyawen 已提交
264 265


Z
zengyawen 已提交
266
### setCDATA
Z
zengyawen 已提交
267

Z
zengyawen 已提交
268
setCDATA(text: string): void
Z
zengyawen 已提交
269

J
jiangkai43 已提交
270
写入CDATA数据。
Z
zengyawen 已提交
271

Z
zengyawen 已提交
272 273
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
274 275
**参数:**

276 277 278
| 参数名 | 类型   | 必填 | 说明              |
| ------ | ------ | ---- | ----------------- |
| text   | string | 是   | CDATA属性的内容。 |
Z
zengyawen 已提交
279

Z
zengyawen 已提交
280 281
**示例:**

J
jiangkai43 已提交
282
```ts
283 284
const myMAX = 2048;
let arrayBuffer = new ArrayBuffer(myMAX);
285
let thatSer = new xml.XmlSerializer(arrayBuffer);
286 287 288 289 290 291 292 293
thatSer.setCDATA('root SYSTEM')
let result = '<![CDATA[root SYSTEM]]>';
let view = new Uint8Array(arrayBuffer);
let view1 = "";
for (let i = 0; i < result.length; ++i) {
    view1 = view1 + String.fromCodePoint(view[i]);
}
console.log(view1) //'<![CDATA[root SYSTEM]]>''
Z
zengyawen 已提交
294
```
Z
zengyawen 已提交
295 296 297 298 299 300


### setText

setText(text: string): void

J
jiangkai43 已提交
301
写入标签值。
Z
zengyawen 已提交
302

Z
zengyawen 已提交
303 304
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
305 306
**参数:**

307 308 309
| 参数名 | 类型   | 必填 | 说明             |
| ------ | ------ | ---- | ---------------- |
| text   | string | 是   | text属性的内容。 |
Z
zengyawen 已提交
310

Z
zengyawen 已提交
311 312
**示例:**

J
jiangkai43 已提交
313
```ts
314 315
const myMAX = 2048;
let arrayBuffer = new ArrayBuffer(myMAX);
316
let thatSer = new xml.XmlSerializer(arrayBuffer);
Z
zengyawen 已提交
317 318 319
thatSer.startElement("note");
thatSer.setAttributes("importance", "high");
thatSer.setText("Happy1");
320 321 322 323 324 325 326 327
thatSer.endElement();
let result = '<note importance="high">Happy1</note>';
let view = new Uint8Array(arrayBuffer);
let view1 = "";
for (let i = 0; i < result.length; ++i) {
    view1 = view1 + String.fromCodePoint(view[i]);
}
console.log(view1) // '<note importance="high">Happy1</note>'
Z
zengyawen 已提交
328
```
Z
zengyawen 已提交
329 330 331 332 333 334


### setDocType

setDocType(text: string): void

J
jiangkai43 已提交
335
写入文档类型。
Z
zengyawen 已提交
336

Z
zengyawen 已提交
337 338
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
339 340
**参数:**

341 342 343
| 参数名 | 类型   | 必填 | 说明                |
| ------ | ------ | ---- | ------------------- |
| text   | string | 是   | DocType属性的内容。 |
Z
zengyawen 已提交
344

Z
zengyawen 已提交
345 346
**示例:**

J
jiangkai43 已提交
347
```ts
348 349
const myMAX = 2048;
let arrayBuffer = new ArrayBuffer(myMAX);
350
let thatSer = new xml.XmlSerializer(arrayBuffer);
351 352 353 354 355 356 357 358
thatSer.setDocType('root SYSTEM "http://www.test.org/test.dtd"');
let result = '<!DOCTYPE root SYSTEM "http://www.test.org/test.dtd">';
let view = new Uint8Array(arrayBuffer);
let view1 = "";
for (let i = 0; i < result.length; ++i) {
    view1 = view1 + String.fromCodePoint(view[i]);
}
console.log(view1) //'<!DOCTYPE root SYSTEM "http://www.test.org/test.dtd">'
Z
zengyawen 已提交
359
```
Z
zengyawen 已提交
360 361 362 363 364


## XmlPullParser


365
### constructor
Z
zengyawen 已提交
366 367 368

constructor(buffer: ArrayBuffer | DataView, encoding?: string)

369
构造并返回一个XmlPullParser对象。
Z
zengyawen 已提交
370

Z
zengyawen 已提交
371 372
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
373 374
**参数:**

375 376
| 参数名   | 类型                              | 必填 | 说明                                       |
| -------- | --------------------------------- | ---- | ------------------------------------------ |
377 378
| buffer   | ArrayBuffer \| DataView | 是   | 需要解析的xml文本信息。 |
| encoding | string                            | 否   | 编码格式 , 默认'utf-8'(目前仅支持'utf-8')。         |
Z
zengyawen 已提交
379 380 381

**示例:**

J
jiangkai43 已提交
382
```ts
383
import util from '@ohos.util';
384
let strXml =
J
jiangkai43 已提交
385
  '<?xml version="1.0" encoding="utf-8"?>' +
386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403
    '<!DOCTYPE note [\n<!ENTITY foo "baa">]>' +
    '<note importance="high" logged="true">' +
    '    <![CDATA[\r\nfuncrion matchwo(a,6)\r\n{\r\nreturn 1;\r\n}\r\n]]>' +
    '    <!--Hello, World!-->' +
    '    <company>John &amp; Hans</company>' +
    '    <title>Happy</title>' +
    '    <title>Happy</title>' +
    '    <lens>Work</lens>' +
    '    <lens>Play</lens>' +
    '    <?go there?>' +
    '    <a><b/></a>' +
    '    <h:table xmlns:h="http://www.w3.org/TR/html4/">' +
    '        <h:tr>' +
    '            <h:td>Apples</h:td>' +
    '            <h:td>Bananas</h:td>' +
    '        </h:tr>' +
    '    </h:table>' +
    '</note>';
404 405 406
let textEncoder = new util.TextEncoder();
let arrbuffer = textEncoder.encodeInto(strXml);
let that = new xml.XmlPullParser(arrbuffer.buffer, 'UTF-8');
407
let str1 = '';
J
jiangkai43 已提交
408 409 410
function func1(name: string, value: string) {
  str1 += name + value;
  return true;
411
}
J
jiangkai43 已提交
412
let options: xml.ParseOptions = {supportDoctype:true, ignoreNameSpace:true, tagValueCallbackFunction:func1}
413
that.parse(options);
J
jiangkai43 已提交
414 415
console.log(str1)
//   note [<!ENTITY foo "baa">]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
Z
zengyawen 已提交
416
```
Z
zengyawen 已提交
417 418 419 420 421 422 423 424


### parse

parse(option: ParseOptions): void

该接口用于解析xml。

Z
zengyawen 已提交
425 426
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
427 428
**参数:**

429 430 431
| 参数名 | 类型                          | 必填 | 说明                             |
| ------ | ----------------------------- | ---- | -------------------------------- |
| option | [ParseOptions](#parseoptions) | 是   | 用户控制以及获取解析信息的选项。 |
Z
zengyawen 已提交
432 433 434

**示例:**

J
jiangkai43 已提交
435
```ts
436
import util from '@ohos.util';
437
let strXml =
J
jiangkai43 已提交
438 439 440 441 442 443
  '<?xml version="1.0" encoding="utf-8"?>' +
    '<note importance="high" logged="true">' +
    '    <title>Happy</title>' +
    '    <todo>Work</todo>' +
    '    <todo>Play</todo>' +
    '</note>';
444 445 446
let textEncoder = new util.TextEncoder();
let arrbuffer = textEncoder.encodeInto(strXml);
let that = new xml.XmlPullParser(arrbuffer.buffer);
447
let str = "";
J
jiangkai43 已提交
448 449 450
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.
Z
zengyawen 已提交
451
}
J
jiangkai43 已提交
452
let options: xml.ParseOptions = {supportDoctype:true, ignoreNameSpace:true, tokenValueCallbackFunction:func}
Z
zengyawen 已提交
453
that.parse(options);
454 455
console.log(str);
// 输出:
J
jiangkai43 已提交
456
// 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
457 458
// 解析:
// key代表了当前事件类型,value为当前解析的深度。你可以根据EVENTTYPE来知道具体的解析事件。例如本示例结果key: value代表含义为:
459
// 0(START_DOCUMENT):0(起始深度为0), 2(START_TAG):1(解析到开始标签node, 对应深度为1), 10(WHITESPACE):1(解析到空白标签空格, 对应深度为1), 2(START_TAG):2(解析到开始标签title, 对应深度为2), ...
Z
zengyawen 已提交
460
```
Z
zengyawen 已提交
461 462 463 464 465 466


## ParseOptions

xml解析选项。

Z
zengyawen 已提交
467 468
**系统能力:** 以下各项对应的系统能力均为SystemCapability.Utils.Lang

Z
zengyawen 已提交
469

470 471
| 名称                           | 类型                                                         | 必填 | 说明                                    |
| ------------------------------ | ------------------------------------------------------------ | ---- | --------------------------------------- |
J
jiangkai43 已提交
472 473 474 475 476
| supportDoctype                 | boolean                                                      | 否   | 是否忽略文档类型,默认false,表示解析文档类型。 |
| ignoreNameSpace                | boolean                                                      | 否   | 是否忽略命名空间,默认false,表示解析命名空间。 |
| tagValueCallbackFunction       | (name: string, value: string) =&gt; boolean | 否   | 获取tagValue回调函数,解析标签和标签值,默认null,表示不解析标签和标签值。  |
| attributeValueCallbackFunction | (name: string, value: string) =&gt; boolean | 否   | 获取attributeValue回调函数,解析属性和属性值,默认null,表示不解析属性和属性值。|
| tokenValueCallbackFunction     | (eventType: [EventType](#eventtype), value: [ParseInfo](#parseinfo)) =&gt; boolean | 否   | 获取tokenValue回调函数,,解析元素事件类型([EventType](#eventtype))和[ParseInfo](#parseinfo)属性,默认null,表示不解析元素事件类型和ParseInfo属性。|
Z
zengyawen 已提交
477 478 479 480 481 482 483 484 485 486

## ParseInfo

当前xml解析信息。


### getColumnNumber

getColumnNumber(): number

Z
zengyawen 已提交
487
获取当前列号,从1开始。
Z
zengyawen 已提交
488

Z
zengyawen 已提交
489 490
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
491 492
**返回值:**

493 494
| 类型   | 说明           |
| ------ | -------------- |
Z
zengyawen 已提交
495
| number | 返回当前列号。 |
Z
zengyawen 已提交
496

497 498
**示例:**

J
jiangkai43 已提交
499
```ts
500
import util from '@ohos.util';
501
let strXml =
J
jiangkai43 已提交
502 503 504 505 506 507
  '<?xml version="1.0" encoding="utf-8"?>' +
    '<note importance="high" logged="true">' +
    '    <title>Happy</title>' +
    '    <todo>Work</todo>' +
    '    <todo>Play</todo>' +
    '</note>';
508 509 510
let textEncoder = new util.TextEncoder();
let arrbuffer = textEncoder.encodeInto(strXml);
let that = new xml.XmlPullParser(arrbuffer.buffer);
511
let str = "";
J
jiangkai43 已提交
512 513 514
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.
515
}
J
jiangkai43 已提交
516
let options: xml.ParseOptions = {supportDoctype:true, ignoreNameSpace:true, tokenValueCallbackFunction:func}
517 518 519
that.parse(options);
console.log(str);
// 输出:
J
jiangkai43 已提交
520
// 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
521
```
Z
zengyawen 已提交
522 523 524 525 526 527 528

### getDepth

getDepth(): number

获取元素的当前深度。

Z
zengyawen 已提交
529 530
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
531 532
**返回值:**

533 534
| 类型   | 说明                 |
| ------ | -------------------- |
Z
zengyawen 已提交
535
| number | 返回元素的当前深度。 |
Z
zengyawen 已提交
536

537 538
**示例:**

J
jiangkai43 已提交
539
```ts
540
import util from '@ohos.util';
541
let strXml =
J
jiangkai43 已提交
542 543 544 545 546 547
  '<?xml version="1.0" encoding="utf-8"?>' +
    '<note importance="high" logged="true">' +
    '    <title>Happy</title>' +
    '    <todo>Work</todo>' +
    '    <todo>Play</todo>' +
    '</note>';
548 549 550
let textEncoder = new util.TextEncoder();
let arrbuffer = textEncoder.encodeInto(strXml);
let that = new xml.XmlPullParser(arrbuffer.buffer);
551
let str = "";
J
jiangkai43 已提交
552 553 554
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.
555
}
J
jiangkai43 已提交
556
let options: xml.ParseOptions = {supportDoctype:true, ignoreNameSpace:true, tokenValueCallbackFunction:func}
557 558 559
that.parse(options);
console.log(str);
// 输出:
J
jiangkai43 已提交
560
// 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
561 562 563 564
// 解析:
// key代表了当前事件类型,value为当前解析的深度。你可以根据EVENTTYPE来知道具体的解析事件。例如本示例结果key: value代表含义为:
// 0(START_DOCUMENT):0(起始深度为0), 2(START_TAG):1(解析到开始标签node, 对应深度为1), 10(WHITESPACE):1(解析到空白标签空格, 对应深度为1), 2(START_TAG):2(解析到开始标签title, 对应深度为2), ...
```
Z
zengyawen 已提交
565 566 567 568 569

### getLineNumber

getLineNumber(): number

Z
zengyawen 已提交
570
获取当前行号,从1开始。
Z
zengyawen 已提交
571

Z
zengyawen 已提交
572 573
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
574 575
**返回值:**

576 577
| 类型   | 说明           |
| ------ | -------------- |
Z
zengyawen 已提交
578
| number | 返回当前行号。 |
Z
zengyawen 已提交
579

580 581
**示例:**

J
jiangkai43 已提交
582
```ts
583
import util from '@ohos.util';
584
let strXml =
J
jiangkai43 已提交
585 586 587 588 589 590
  '<?xml version="1.0" encoding="utf-8"?>' +
    '<note importance="high" logged="true">' +
    '    <title>Happy</title>' +
    '    <todo>Work</todo>' +
    '    <todo>Play</todo>' +
    '</note>';
591 592 593
let textEncoder = new util.TextEncoder();
let arrbuffer = textEncoder.encodeInto(strXml);
let that = new xml.XmlPullParser(arrbuffer.buffer);
594
let str = "";
J
jiangkai43 已提交
595 596 597
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.
598
}
J
jiangkai43 已提交
599
let options: xml.ParseOptions = {supportDoctype:true, ignoreNameSpace:true, tokenValueCallbackFunction:func}
600 601 602
that.parse(options);
console.log(str);
// 输出:
J
jiangkai43 已提交
603
// 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
604
```
Z
zengyawen 已提交
605 606 607 608 609 610 611

### getName

getName(): string

获取当前元素名称。

Z
zengyawen 已提交
612 613
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
614 615
**返回值:**

616 617
| 类型   | 说明               |
| ------ | ------------------ |
Z
zengyawen 已提交
618
| string | 返回当前元素名称。 |
Z
zengyawen 已提交
619

620
**示例:**
Z
zengyawen 已提交
621

J
jiangkai43 已提交
622
```ts
623
import util from '@ohos.util';
624
let strXml =
J
jiangkai43 已提交
625 626 627 628 629 630
  '<?xml version="1.0" encoding="utf-8"?>' +
    '<note importance="high" logged="true">' +
    '    <title>Happy</title>' +
    '    <todo>Work</todo>' +
    '    <todo>Play</todo>' +
    '</note>';
631 632 633
let textEncoder = new util.TextEncoder();
let arrbuffer = textEncoder.encodeInto(strXml);
let that = new xml.XmlPullParser(arrbuffer.buffer);
634
let str = "";
J
jiangkai43 已提交
635 636 637
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.
638
}
J
jiangkai43 已提交
639
let options: xml.ParseOptions = {supportDoctype:true, ignoreNameSpace:true, tokenValueCallbackFunction:func}
640 641 642
that.parse(options);
console.log(str);
// 输出:
J
jiangkai43 已提交
643
// 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:
644
```
Z
zengyawen 已提交
645 646 647 648 649 650
### getNamespace

getNamespace(): string

获取当前元素的命名空间。

Z
zengyawen 已提交
651 652
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
653 654
**返回值:**

655 656
| 类型   | 说明                     |
| ------ | ------------------------ |
Z
zengyawen 已提交
657
| string | 返回当前元素的命名空间。 |
Z
zengyawen 已提交
658

659
**示例:**
Z
zengyawen 已提交
660

J
jiangkai43 已提交
661
```ts
662
import util from '@ohos.util';
663
let strXml =
J
jiangkai43 已提交
664 665 666 667 668 669
  '<?xml version="1.0" encoding="utf-8"?>' +
    '<note importance="high" logged="true">' +
    '    <title>Happy</title>' +
    '    <todo>Work</todo>' +
    '    <todo>Play</todo>' +
    '</note>';
670 671 672
let textEncoder = new util.TextEncoder();
let arrbuffer = textEncoder.encodeInto(strXml);
let that = new xml.XmlPullParser(arrbuffer.buffer);
673
let str = "";
J
jiangkai43 已提交
674 675 676
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.
677
}
J
jiangkai43 已提交
678
let options: xml.ParseOptions = {supportDoctype:true, ignoreNameSpace:true, tokenValueCallbackFunction:func}
679 680 681
that.parse(options);
console.log(str);
// 输出:
J
jiangkai43 已提交
682
// 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:
683
```
Z
zengyawen 已提交
684 685 686 687 688 689
### getPrefix

getPrefix(): string

获取当前元素前缀。

Z
zengyawen 已提交
690 691
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
692 693
**返回值:**

694 695
| 类型   | 说明               |
| ------ | ------------------ |
Z
zengyawen 已提交
696
| string | 返回当前元素前缀。 |
Z
zengyawen 已提交
697

698 699
**示例:**

J
jiangkai43 已提交
700
```ts
701
import util from '@ohos.util';
702
let strXml =
J
jiangkai43 已提交
703 704 705 706 707 708
  '<?xml version="1.0" encoding="utf-8"?>' +
    '<note importance="high" logged="true">' +
    '    <title>Happy</title>' +
    '    <todo>Work</todo>' +
    '    <todo>Play</todo>' +
    '</note>';
709 710 711
let textEncoder = new util.TextEncoder();
let arrbuffer = textEncoder.encodeInto(strXml);
let that = new xml.XmlPullParser(arrbuffer.buffer);
712
let str = "";
J
jiangkai43 已提交
713 714 715
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.
716
}
J
jiangkai43 已提交
717
let options: xml.ParseOptions = {supportDoctype:true, ignoreNameSpace:true, tokenValueCallbackFunction:func}
718 719 720
that.parse(options);
console.log(str);
// 输出:
J
jiangkai43 已提交
721
// 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:
722
```
Z
zengyawen 已提交
723 724 725 726 727 728 729

### getText

getText(): string

获取当前事件的文本内容。

Z
zengyawen 已提交
730 731
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
732 733
**返回值:**

734 735
| 类型   | 说明                     |
| ------ | ------------------------ |
Z
zengyawen 已提交
736
| string | 返回当前事件的文本内容。 |
Z
zengyawen 已提交
737

738
**示例:**
Z
zengyawen 已提交
739

J
jiangkai43 已提交
740
```ts
741
import util from '@ohos.util';
742
let strXml =
J
jiangkai43 已提交
743 744 745 746 747 748
  '<?xml version="1.0" encoding="utf-8"?>' +
    '<note importance="high" logged="true">' +
    '    <title>Happy</title>' +
    '    <todo>Work</todo>' +
    '    <todo>Play</todo>' +
    '</note>';
749 750 751
let textEncoder = new util.TextEncoder();
let arrbuffer = textEncoder.encodeInto(strXml);
let that = new xml.XmlPullParser(arrbuffer.buffer);
752
let str = "";
J
jiangkai43 已提交
753 754 755
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.
756
}
J
jiangkai43 已提交
757
let options: xml.ParseOptions = {supportDoctype:true, ignoreNameSpace:true, tokenValueCallbackFunction:func}
758 759 760
that.parse(options);
console.log(str);
// 输出:
J
jiangkai43 已提交
761
// 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:
762
```
Z
zengyawen 已提交
763 764 765 766 767 768
### isEmptyElementTag

isEmptyElementTag(): boolean

判断当前元素是否为空元素。

Z
zengyawen 已提交
769 770
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
771 772
**返回值:**

773 774
| 类型    | 说明                         |
| ------- | ---------------------------- |
Z
zengyawen 已提交
775
| boolean | 返回true,当前元素为空元素。 |
Z
zengyawen 已提交
776

777
**示例:**
Z
zengyawen 已提交
778

J
jiangkai43 已提交
779
```ts
780
import util from '@ohos.util';
781
let strXml =
J
jiangkai43 已提交
782 783 784 785 786 787
  '<?xml version="1.0" encoding="utf-8"?>' +
    '<note importance="high" logged="true">' +
    '    <title>Happy</title>' +
    '    <todo>Work</todo>' +
    '    <todo>Play</todo>' +
    '</note>';
788 789 790
let textEncoder = new util.TextEncoder();
let arrbuffer = textEncoder.encodeInto(strXml);
let that = new xml.XmlPullParser(arrbuffer.buffer);
791
let str = "";
J
jiangkai43 已提交
792 793 794
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.
795
}
J
jiangkai43 已提交
796
let options: xml.ParseOptions = {supportDoctype:true, ignoreNameSpace:true, tokenValueCallbackFunction:func}
797 798 799
that.parse(options);
console.log(str);
// 输出:
J
jiangkai43 已提交
800
// 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
801
```
Z
zengyawen 已提交
802 803 804 805 806 807
### isWhitespace

isWhitespace(): boolean

判断当前文本事件是否仅包含空格字符。

Z
zengyawen 已提交
808 809
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
810 811
**返回值:**

812 813
| 类型    | 说明                                   |
| ------- | -------------------------------------- |
Z
zengyawen 已提交
814
| boolean | 返回true,当前文本事件仅包含空格字符。 |
Z
zengyawen 已提交
815

816
**示例:**
Z
zengyawen 已提交
817

J
jiangkai43 已提交
818
```ts
819
import util from '@ohos.util';
820
let strXml =
J
jiangkai43 已提交
821 822 823 824 825 826
  '<?xml version="1.0" encoding="utf-8"?>' +
    '<note importance="high" logged="true">' +
    '    <title>Happy</title>' +
    '    <todo>Work</todo>' +
    '    <todo>Play</todo>' +
    '</note>';
827 828 829
let textEncoder = new util.TextEncoder();
let arrbuffer = textEncoder.encodeInto(strXml);
let that = new xml.XmlPullParser(arrbuffer.buffer);
830
let str = "";
J
jiangkai43 已提交
831 832 833
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.
834
}
J
jiangkai43 已提交
835
let options: xml.ParseOptions = {supportDoctype:true, ignoreNameSpace:true, tokenValueCallbackFunction:func}
836 837 838
that.parse(options);
console.log(str);
// 输出:
J
jiangkai43 已提交
839
// 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
840
```
Z
zengyawen 已提交
841 842 843 844 845 846
### getAttributeCount

getAttributeCount(): number

获取当前开始标记的属性数。

Z
zengyawen 已提交
847 848
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
849
**返回值:**
850 851
| 类型   | 说明                   |
| ------ | ---------------------- |
Z
zengyawen 已提交
852
| number | 当前开始标记的属性数。 |
Z
zengyawen 已提交
853

854 855
**示例:**

J
jiangkai43 已提交
856
```ts
857
import util from '@ohos.util';
858
let strXml =
J
jiangkai43 已提交
859 860 861 862 863 864
  '<?xml version="1.0" encoding="utf-8"?>' +
    '<note importance="high" logged="true">' +
    '    <title>Happy</title>' +
    '    <todo>Work</todo>' +
    '    <todo>Play</todo>' +
    '</note>';
865 866 867
let textEncoder = new util.TextEncoder();
let arrbuffer = textEncoder.encodeInto(strXml);
let that = new xml.XmlPullParser(arrbuffer.buffer);
868
let str = "";
J
jiangkai43 已提交
869 870 871
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.
872
}
J
jiangkai43 已提交
873
let options: xml.ParseOptions = {supportDoctype:true, ignoreNameSpace:true, tokenValueCallbackFunction:func}
874 875 876
that.parse(options);
console.log(str);
// 输出:
J
jiangkai43 已提交
877
// 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
878
```
Z
zengyawen 已提交
879 880 881

## EventType

J
jiangkai43 已提交
882
事件类型枚举。
Z
zengyawen 已提交
883

Z
zengyawen 已提交
884 885
**系统能力:** 以下各项对应的系统能力均为SystemCapability.Utils.Lang

886 887 888 889 890 891 892 893 894 895 896 897 898
| 名称             | 值   | 说明                  |
| ---------------- | ---- | --------------------- |
| START_DOCUMENT   | 0    | 启动文件事件。        |
| END_DOCUMENT     | 1    | 结束文件事件。        |
| START_TAG        | 2    | 启动标签事件。        |
| END_TAG          | 3    | 结束标签事件。        |
| TEXT             | 4    | 文本事件。            |
| CDSECT           | 5    | CDATA事件。           |
| COMMENT          | 6    | XML注释事件。         |
| DOCDECL          | 7    | XML文档类型声明事件。 |
| INSTRUCTION      | 8    | XML处理指令声明事件。 |
| ENTITY_REFERENCE | 9    | 实体引用事件。        |
| WHITESPACE       | 10   | 空白事件。            |