1# @ohos.xml (xml解析与生成)
2
3本模块提供了将XML文本转换为JavaScript对象、以及XML文件生成和解析的一系列接口。
4
5> **说明:**
6>
7> 本模块首批接口从API version 8开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
8
9
10## 导入模块
11
12```
13import { xml } from '@kit.ArkTS';
14```
15
16## XmlSerializer
17
18XmlSerializer接口用于生成XML文件。
19
20### constructor
21
22constructor(buffer: ArrayBuffer | DataView, encoding?: string)
23
24XmlSerializer的构造函数。
25
26> **说明:**
27>
28> buffer是一个用户根据需要自定义大小的缓存区域,用于临时存储生成的XML文本。在使用过程中务必确保所设置的缓存区足够大,使其可以容纳生成文本的所有内容。
29
30**原子化服务API**:从API version 11 开始,该接口支持在原子化服务中使用。
31
32**系统能力:** SystemCapability.Utils.Lang
33
34**参数:**
35
36| 参数名   | 类型                              | 必填 | 说明                                             |
37| -------- | --------------------------------- | ---- | ------------------------------------------------ |
38| buffer   | ArrayBuffer \| DataView | 是   | 用于接收写入xml信息的ArrayBuffer或DataView内存。 |
39| encoding | string                            | 否   | 编码格式 , 默认'utf-8'(目前仅支持'utf-8')。               |
40
41**错误码:**
42
43以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
44
45| 错误码ID | 错误信息 |
46| -------- | -------- |
47| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
48
49**示例:**
50
51```ts
52let arrayBuffer = new ArrayBuffer(2048);
53let thatSer = new xml.XmlSerializer(arrayBuffer, "utf-8");
54```
55
56### setAttributes
57
58setAttributes(name: string, value: string): void
59
60写入元素的属性和属性值。
61
62> **说明:**
63>
64> 该接口对所添加数据不做标准XML校验处理,请确保所添加的数据符合标准XML规范。比如不允许添加数字开头的属性名称以及添加多个同名的属性名称。
65
66**原子化服务API**:从API version 11 开始,该接口支持在原子化服务中使用。
67
68**系统能力:** SystemCapability.Utils.Lang
69
70**参数:**
71
72| 参数名 | 类型   | 必填 | 说明            |
73| ------ | ------ | ---- | --------------- |
74| name   | string | 是   | 属性。   |
75| value  | string | 是   | 属性值。 |
76
77**错误码:**
78
79以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
80
81| 错误码ID | 错误信息 |
82| -------- | -------- |
83| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
84
85**示例:**
86
87```ts
88import { util } from '@kit.ArkTS';
89
90let arrayBuffer = new ArrayBuffer(2048);
91let thatSer = new xml.XmlSerializer(arrayBuffer);
92thatSer.startElement("note");
93thatSer.setAttributes("importance", "high");
94thatSer.endElement();
95let uint8 = new Uint8Array(arrayBuffer);
96let result = util.TextDecoder.create().decodeToString(uint8);
97console.log(result); // <note importance="high"/>
98```
99
100### addEmptyElement
101
102addEmptyElement(name: string): void
103
104写入一个空元素。
105
106> **说明:**
107>
108> 该接口对所添加数据不做标准XML校验处理,请确保所添加的数据符合标准XML规范。比如不允许添加数字开头的元素名称。
109
110**原子化服务API**:从API version 11 开始,该接口支持在原子化服务中使用。
111
112**系统能力:** SystemCapability.Utils.Lang
113
114**参数:**
115
116| 参数名 | 类型   | 必填 | 说明               |
117| ------ | ------ | ---- | ------------------ |
118| name   | string | 是   | 该空元素的元素名。 |
119
120**错误码:**
121
122以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
123
124| 错误码ID | 错误信息 |
125| -------- | -------- |
126| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
127
128**示例:**
129
130```ts
131import { util } from '@kit.ArkTS';
132
133let arrayBuffer = new ArrayBuffer(2048);
134let thatSer = new xml.XmlSerializer(arrayBuffer);
135thatSer.addEmptyElement("d");
136let uint8 = new Uint8Array(arrayBuffer);
137let result = util.TextDecoder.create().decodeToString(uint8);
138console.log(result); // <d/>
139```
140
141### setDeclaration
142
143setDeclaration(): void
144
145编写带有编码的文件声明。
146
147**原子化服务API**:从API version 11 开始,该接口支持在原子化服务中使用。
148
149**系统能力:** SystemCapability.Utils.Lang
150
151**示例:**
152
153```ts
154import { util } from '@kit.ArkTS';
155
156let arrayBuffer = new ArrayBuffer(2048);
157let thatSer = new xml.XmlSerializer(arrayBuffer);
158thatSer.setDeclaration();
159let uint8 = new Uint8Array(arrayBuffer);
160let result = util.TextDecoder.create().decodeToString(uint8);
161console.log(result);
162// <?xml version="1.0" encoding="utf-8"?>
163```
164
165### startElement
166
167startElement(name: string): void
168
169根据给定名称写入元素开始标记。
170
171> **说明:**
172>
173>- 调用该接口后须调用[endElement](#endelement)写入元素结束标记,以确保节点正确闭合。
174>
175>- 该接口对所添加数据不做标准XML校验处理,请确保所添加的数据符合标准XML规范。比如不允许添加数字开头的元素名称。
176
177**原子化服务API**:从API version 11 开始,该接口支持在原子化服务中使用。
178
179**系统能力:** SystemCapability.Utils.Lang
180
181**参数:**
182
183| 参数名 | 类型   | 必填 | 说明               |
184| ------ | ------ | ---- | ------------------ |
185| name   | string | 是   | 当前元素的元素名。 |
186
187**错误码:**
188
189以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
190
191| 错误码ID | 错误信息 |
192| -------- | -------- |
193| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
194
195**示例:**
196
197```ts
198import { util } from '@kit.ArkTS';
199
200let arrayBuffer = new ArrayBuffer(2048);
201let thatSer = new xml.XmlSerializer(arrayBuffer);
202thatSer.startElement("note");
203thatSer.setText("Happy");
204thatSer.endElement();
205let uint8 = new Uint8Array(arrayBuffer);
206let result = util.TextDecoder.create().decodeToString(uint8);
207console.log(result);
208// <note>Happy</note>
209```
210
211### endElement
212
213endElement(): void
214
215写入元素结束标记。
216
217> **说明:**
218>
219> 调用该接口前必须先调用[startElement](#startelement)接口写入元素开始标记。
220
221**原子化服务API**:从API version 11 开始,该接口支持在原子化服务中使用。
222
223**系统能力:** SystemCapability.Utils.Lang
224
225**示例:**
226
227```ts
228import { util } from '@kit.ArkTS';
229
230let arrayBuffer = new ArrayBuffer(2048);
231let thatSer = new xml.XmlSerializer(arrayBuffer);
232thatSer.startElement("note");
233thatSer.setText("Happy");
234thatSer.endElement();
235let uint8 = new Uint8Array(arrayBuffer);
236let result = util.TextDecoder.create().decodeToString(uint8);
237console.log(result);
238// <note>Happy</note>
239```
240
241### setNamespace
242
243setNamespace(prefix: string, namespace: string): void
244
245写入当前元素标记的命名空间。
246
247> **说明:**
248>
249> 该接口对所添加数据不做标准XML校验处理,请确保所添加的数据符合标准XML规范。比如不允许添加数字开头的前缀以及对同一个元素设置多个命名空间。
250
251**原子化服务API**:从API version 11 开始,该接口支持在原子化服务中使用。
252
253**系统能力:** SystemCapability.Utils.Lang
254
255**参数:**
256
257| 参数名    | 类型   | 必填 | 说明                           |
258| --------- | ------ | ---- | ------------------------------ |
259| prefix    | string | 是   | 当前元素及其子元素的前缀。     |
260| namespace | string | 是   | 当前元素及其子元素的命名空间。 |
261
262**错误码:**
263
264以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
265
266| 错误码ID | 错误信息 |
267| -------- | -------- |
268| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
269
270**示例:**
271
272```ts
273import { util } from '@kit.ArkTS';
274
275let arrayBuffer = new ArrayBuffer(2048);
276let thatSer = new xml.XmlSerializer(arrayBuffer);
277thatSer.setNamespace("h", "http://www.w3.org/TR/html4/");
278thatSer.startElement("note");
279thatSer.endElement();
280let uint8 = new Uint8Array(arrayBuffer);
281let result = util.TextDecoder.create().decodeToString(uint8);
282console.log(result);
283// <h:note xmlns:h="http://www.w3.org/TR/html4/"/>
284```
285
286### setComment
287
288setComment(text: string): void
289
290写入注释内容。
291
292**原子化服务API**:从API version 11 开始,该接口支持在原子化服务中使用。
293
294**系统能力:** SystemCapability.Utils.Lang
295
296**参数:**
297
298| 参数名 | 类型   | 必填 | 说明                 |
299| ------ | ------ | ---- | -------------------- |
300| text   | string | 是   | 当前元素的注释内容。 |
301
302**错误码:**
303
304以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
305
306| 错误码ID | 错误信息 |
307| -------- | -------- |
308| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
309
310**示例:**
311
312```ts
313import { util } from '@kit.ArkTS';
314
315let arrayBuffer = new ArrayBuffer(2048);
316let thatSer = new xml.XmlSerializer(arrayBuffer);
317thatSer.setComment("Hello, World!");
318let uint8 = new Uint8Array(arrayBuffer);
319let result = util.TextDecoder.create().decodeToString(uint8);
320console.log(result); // <!--Hello, World!-->
321```
322
323### setCDATA
324
325setCDATA(text: string): void
326
327提供在CDATA标签中添加数据的能力,所生成的CDATA标签结构为:"\<!\[CDATA\[" + 所添加的数据 + "\]\]\>"。
328
329> **说明:**
330>
331> 该接口对所添加数据不做标准XML校验处理,请确保所添加的数据符合标准XML规范。比如不允许在CDATA标签中添加包含"\]\]\>"字符串的数据。
332
333**原子化服务API**:从API version 11 开始,该接口支持在原子化服务中使用。
334
335**系统能力:** SystemCapability.Utils.Lang
336
337**参数:**
338
339| 参数名 | 类型   | 必填 | 说明              |
340| ------ | ------ | ---- | ----------------- |
341| text   | string | 是   | CDATA属性的内容。 |
342
343**错误码:**
344
345以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
346
347| 错误码ID | 错误信息 |
348| -------- | -------- |
349| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
350
351**示例:**
352
353```ts
354import { util } from '@kit.ArkTS';
355
356let arrayBuffer = new ArrayBuffer(2048);
357let thatSer = new xml.XmlSerializer(arrayBuffer);
358thatSer.setCDATA('root SYSTEM')
359let uint8 = new Uint8Array(arrayBuffer);
360let result = util.TextDecoder.create().decodeToString(uint8);
361console.log(result); // <![CDATA[root SYSTEM]]>
362```
363
364### setText
365
366setText(text: string): void
367
368写入标签值。
369
370**原子化服务API**:从API version 11 开始,该接口支持在原子化服务中使用。
371
372**系统能力:** SystemCapability.Utils.Lang
373
374**参数:**
375
376| 参数名 | 类型   | 必填 | 说明             |
377| ------ | ------ | ---- | ---------------- |
378| text   | string | 是   | text属性的内容。 |
379
380**错误码:**
381
382以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
383
384| 错误码ID | 错误信息 |
385| -------- | -------- |
386| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
387
388**示例:**
389
390```ts
391import { util } from '@kit.ArkTS';
392
393let arrayBuffer = new ArrayBuffer(2048);
394let thatSer = new xml.XmlSerializer(arrayBuffer);
395thatSer.startElement("note");
396thatSer.setAttributes("importance", "high");
397thatSer.setText("Happy");
398thatSer.endElement();
399let uint8 = new Uint8Array(arrayBuffer);
400let result = util.TextDecoder.create().decodeToString(uint8);
401console.log(result); // <note importance="high">Happy</note>
402```
403
404### setDocType
405
406setDocType(text: string): void
407
408写入文档类型。
409
410**原子化服务API**:从API version 11 开始,该接口支持在原子化服务中使用。
411
412**系统能力:** SystemCapability.Utils.Lang
413
414**参数:**
415
416| 参数名 | 类型   | 必填 | 说明                |
417| ------ | ------ | ---- | ------------------- |
418| text   | string | 是   | DocType属性的内容。 |
419
420**错误码:**
421
422以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
423
424| 错误码ID | 错误信息 |
425| -------- | -------- |
426| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
427
428**示例:**
429
430```ts
431import { util } from '@kit.ArkTS';
432
433let arrayBuffer = new ArrayBuffer(2048);
434let thatSer = new xml.XmlSerializer(arrayBuffer);
435thatSer.setDocType('root SYSTEM "http://www.test.org/test.dtd"');
436let uint8 = new Uint8Array(arrayBuffer);
437let result = util.TextDecoder.create().decodeToString(uint8);
438console.log(result); // <!DOCTYPE root SYSTEM "http://www.test.org/test.dtd">
439```
440
441## XmlPullParser
442
443XmlPullParser接口用于解析现有的XML文件。
444
445### constructor
446
447constructor(buffer: ArrayBuffer | DataView, encoding?: string)
448
449构造并返回一个XmlPullParser对象。
450
451**原子化服务API**:从API version 11 开始,该接口支持在原子化服务中使用。
452
453**系统能力:** SystemCapability.Utils.Lang
454
455**参数:**
456
457| 参数名   | 类型                              | 必填 | 说明                                       |
458| -------- | --------------------------------- | ---- | ------------------------------------------ |
459| buffer   | ArrayBuffer \| DataView | 是   | 需要解析的xml文本信息。 |
460| encoding | string                            | 否   | 编码格式 , 默认'utf-8'(目前仅支持'utf-8')。         |
461
462**错误码:**
463
464以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
465
466| 错误码ID | 错误信息 |
467| -------- | -------- |
468| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
469
470**示例:**
471
472```ts
473import { util } from '@kit.ArkTS';
474
475let strXml = '<title>Happy</title>'
476let textEncoder = new util.TextEncoder();
477let arrbuffer = textEncoder.encodeInto(strXml);
478let that = new xml.XmlPullParser(arrbuffer.buffer as object as ArrayBuffer, 'UTF-8');
479```
480
481### parse
482
483parse(option: ParseOptions): void
484
485该接口用于解析xml。
486
487**原子化服务API**:从API version 11 开始,该接口支持在原子化服务中使用。
488
489**系统能力:** SystemCapability.Utils.Lang
490
491**参数:**
492
493| 参数名 | 类型                          | 必填 | 说明                             |
494| ------ | ----------------------------- | ---- | -------------------------------- |
495| option | [ParseOptions](#parseoptions) | 是   | 用户控制以及获取解析信息的选项。 |
496
497**错误码:**
498
499以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
500
501| 错误码ID | 错误信息 |
502| -------- | -------- |
503| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. |
504
505**示例:**
506
507```ts
508import { util } from '@kit.ArkTS';
509
510let strXml =
511  '<?xml version="1.0" encoding="utf-8"?>' +
512  '<note importance="high" logged="true">' +
513    '<company>John &amp; Hans</company>' +
514    '<title>Happy</title>' +
515  '</note>';
516let textEncoder = new util.TextEncoder();
517let arrbuffer = textEncoder.encodeInto(strXml);
518let that = new xml.XmlPullParser(arrbuffer.buffer as object as ArrayBuffer, 'UTF-8');
519let str = '';
520function func(name: string, value: string) {
521  str = name + value;
522  console.log(str);
523  return true;
524}
525let options: xml.ParseOptions = {supportDoctype:true, ignoreNameSpace:true, tagValueCallbackFunction:func}
526that.parse(options);
527// note
528// company
529// John & Hans
530// company
531// title
532// Happy
533// title
534// note
535```
536
537## ParseOptions
538
539xml解析选项。
540
541**原子化服务API**:从API version 11 开始,该接口支持在原子化服务中使用。
542
543**系统能力:** 以下各项对应的系统能力均为SystemCapability.Utils.Lang
544
545
546| 名称                           | 类型                                                         | 必填 | 说明                                    |
547| ------------------------------ | ------------------------------------------------------------ | ---- | --------------------------------------- |
548| supportDoctype                 | boolean                                                      | 否   | 是否忽略文档类型,默认false,表示不解析文档类型。 |
549| ignoreNameSpace                | boolean                                                      | 否   | 是否忽略命名空间,默认false,表示解析命名空间。 |
550| tagValueCallbackFunction       | (name: string, value: string) =&gt; boolean | 否   | 获取tagValue回调函数,解析标签和标签值,默认undefined,表示不解析标签和标签值。 |
551| attributeValueCallbackFunction | (name: string, value: string) =&gt; boolean | 否   | 获取attributeValue回调函数,解析属性和属性值,默认undefined,表示不解析属性和属性值。 |
552| tokenValueCallbackFunction     | (eventType: [EventType](#eventtype), value: [ParseInfo](#parseinfo)) =&gt; boolean | 否   | 获取tokenValue回调函数,,解析元素事件类型([EventType](#eventtype))和[ParseInfo](#parseinfo)属性,默认undefined,表示不解析元素事件类型和ParseInfo属性。 |
553
554## ParseInfo
555
556当前xml解析信息。
557
558
559### getColumnNumber
560
561getColumnNumber(): number
562
563获取当前列号,从1开始。
564
565**原子化服务API**:从API version 11 开始,该接口支持在原子化服务中使用。
566
567**系统能力:** SystemCapability.Utils.Lang
568
569**返回值:**
570
571| 类型   | 说明           |
572| ------ | -------------- |
573| number | 返回当前列号。 |
574
575**示例:**
576
577```ts
578import { util } from '@kit.ArkTS';
579
580let strXml = '<?xml version="1.0" encoding="utf-8"?><note>Happy</note>';
581let textEncoder = new util.TextEncoder();
582let arrbuffer = textEncoder.encodeInto(strXml);
583let that = new xml.XmlPullParser(arrbuffer.buffer as object as ArrayBuffer);
584let str = "";
585function func(key: xml.EventType, value: xml.ParseInfo) {
586  str += 'key:' + key + ' value:' + value.getColumnNumber() + ' ';
587  return true; // Determines whether to continually parse, which is used to continue or terminate parsing.
588}
589let options: xml.ParseOptions = {supportDoctype:true, ignoreNameSpace:true, tokenValueCallbackFunction:func}
590that.parse(options);
591console.log(str);
592// key:0 value:1 key:2 value:45 key:4 value:50 key:3 value:57 key:1 value:57
593```
594
595### getDepth
596
597getDepth(): number
598
599获取元素的当前深度。
600
601> **说明:**
602>
603> 标签内的空白事件深度与标签的深度保持一致。
604
605**原子化服务API**:从API version 11 开始,该接口支持在原子化服务中使用。
606
607**系统能力:** SystemCapability.Utils.Lang
608
609**返回值:**
610
611| 类型   | 说明                 |
612| ------ | -------------------- |
613| number | 返回元素的当前深度。 |
614
615**示例:**
616
617```ts
618import { util } from '@kit.ArkTS';
619
620let strXml =
621  '<?xml version="1.0" encoding="utf-8"?>' +
622  '<note importance="high">' +
623    '<title>Happy</title>' +
624  '</note>';
625let textEncoder = new util.TextEncoder();
626let arrbuffer = textEncoder.encodeInto(strXml);
627let that = new xml.XmlPullParser(arrbuffer.buffer as object as ArrayBuffer);
628let str = "";
629function func(key: xml.EventType, value: xml.ParseInfo) {
630  str += 'key:' + key + ' value:' + value.getDepth() + ' ';
631  return true; // Determines whether to continually parse, which is used to continue or terminate parsing.
632}
633let options: xml.ParseOptions = {supportDoctype:true, ignoreNameSpace:true, tokenValueCallbackFunction:func}
634that.parse(options);
635console.log(str);
636// key:0 value:0 key:2 value:1 key:2 value:2 key:4 value:2 key:3 value:2 key:3 value:1 key:1 value:0
637```
638
639### getLineNumber
640
641getLineNumber(): number
642
643获取当前行号,从1开始。
644
645**原子化服务API**:从API version 11 开始,该接口支持在原子化服务中使用。
646
647**系统能力:** SystemCapability.Utils.Lang
648
649**返回值:**
650
651| 类型   | 说明           |
652| ------ | -------------- |
653| number | 返回当前行号。 |
654
655**示例:**
656
657```ts
658import { util } from '@kit.ArkTS';
659
660let strXml = '<?xml version="1.0" encoding="utf-8"?><note>Work</note>';
661let textEncoder = new util.TextEncoder();
662let arrbuffer = textEncoder.encodeInto(strXml);
663let that = new xml.XmlPullParser(arrbuffer.buffer as object as ArrayBuffer);
664let str = "";
665function func(key: xml.EventType, value: xml.ParseInfo) {
666  str += 'key:' + key + ' value:' + value.getLineNumber() + ' ';
667  return true; // Determines whether to continually parse, which is used to continue or terminate parsing.
668}
669let options: xml.ParseOptions = {supportDoctype:true, ignoreNameSpace:true, tokenValueCallbackFunction:func}
670that.parse(options);
671console.log(str);
672// key:0 value:1 key:2 value:1 key:4 value:1 key:3 value:1 key:1 value:1
673```
674
675### getName
676
677getName(): string
678
679获取当前元素名称。
680
681**原子化服务API**:从API version 11 开始,该接口支持在原子化服务中使用。
682
683**系统能力:** SystemCapability.Utils.Lang
684
685**返回值:**
686
687| 类型   | 说明               |
688| ------ | ------------------ |
689| string | 返回当前元素名称。 |
690
691**示例:**
692
693```ts
694import { util } from '@kit.ArkTS';
695
696let strXml = '<?xml version="1.0" encoding="utf-8"?><note>Happy</note>';
697let textEncoder = new util.TextEncoder();
698let arrbuffer = textEncoder.encodeInto(strXml);
699let that = new xml.XmlPullParser(arrbuffer.buffer as object as ArrayBuffer);
700let str = "";
701function func(key: xml.EventType, value: xml.ParseInfo) {
702  str += 'key:' + key + ' value:' + value.getName() + ' ';
703  return true; // Determines whether to continually parse, which is used to continue or terminate parsing.
704}
705let options: xml.ParseOptions = {supportDoctype:true, ignoreNameSpace:true, tokenValueCallbackFunction:func}
706that.parse(options);
707console.log(str);
708// key:0 value: key:2 value:note key:4 value: key:3 value:note key:1 value:
709```
710### getNamespace
711
712getNamespace(): string
713
714获取当前元素的命名空间。
715
716**原子化服务API**:从API version 11 开始,该接口支持在原子化服务中使用。
717
718**系统能力:** SystemCapability.Utils.Lang
719
720**返回值:**
721
722| 类型   | 说明                     |
723| ------ | ------------------------ |
724| string | 返回当前元素的命名空间。 |
725
726**示例:**
727
728```ts
729import { util } from '@kit.ArkTS';
730
731let strXml =
732  '<?xml version="1.0" encoding="utf-8"?>' +
733  '<note xmlns:h="http://www.w3.org">' +
734    '<h:title>Happy</h:title>' +
735  '</note>';
736let textEncoder = new util.TextEncoder();
737let arrbuffer = textEncoder.encodeInto(strXml);
738let that = new xml.XmlPullParser(arrbuffer.buffer as object as ArrayBuffer);
739let str = "";
740function func(key: xml.EventType, value: xml.ParseInfo) {
741  str += 'key:' + key + ' value:' + value.getNamespace() + ' ';
742  return true; // Determines whether to continually parse, which is used to continue or terminate parsing.
743}
744let options: xml.ParseOptions = {supportDoctype:true, ignoreNameSpace:false, tokenValueCallbackFunction:func}
745that.parse(options);
746console.log(str);
747// key:0 value: key:2 value: key:2 value:http://www.w3.org key:4 value: key:3 value:http://www.w3.org key:3 value: key:1 value:
748```
749### getPrefix
750
751getPrefix(): string
752
753获取当前元素前缀。
754
755**原子化服务API**:从API version 11 开始,该接口支持在原子化服务中使用。
756
757**系统能力:** SystemCapability.Utils.Lang
758
759**返回值:**
760
761| 类型   | 说明               |
762| ------ | ------------------ |
763| string | 返回当前元素前缀。 |
764
765**示例:**
766
767```ts
768import { util } from '@kit.ArkTS';
769
770let strXml =
771  '<?xml version="1.0" encoding="utf-8"?>' +
772  '<note xmlns:h="http://www.w3.org/TR/html4">' +
773    '<h:title>Happy</h:title>' +
774  '</note>';
775let textEncoder = new util.TextEncoder();
776let arrbuffer = textEncoder.encodeInto(strXml);
777let that = new xml.XmlPullParser(arrbuffer.buffer as object as ArrayBuffer);
778let str = "";
779function func(key: xml.EventType, value: xml.ParseInfo) {
780  str += 'key:' + key + ' value:' + value.getPrefix() + ' ';
781  return true; // Determines whether to continually parse, which is used to continue or terminate parsing.
782}
783let options: xml.ParseOptions = {supportDoctype:true, ignoreNameSpace:false, tokenValueCallbackFunction:func}
784that.parse(options);
785console.log(str);
786// key:0 value: key:2 value: key:2 value:h key:4 value: key:3 value:h key:3 value: key:1 value:
787```
788
789### getText
790
791getText(): string
792
793获取当前事件的文本内容。
794
795**原子化服务API**:从API version 11 开始,该接口支持在原子化服务中使用。
796
797**系统能力:** SystemCapability.Utils.Lang
798
799**返回值:**
800
801| 类型   | 说明                     |
802| ------ | ------------------------ |
803| string | 返回当前事件的文本内容。 |
804
805**示例:**
806
807```ts
808import { util } from '@kit.ArkTS';
809
810let strXml = '<?xml version="1.0" encoding="utf-8"?><note>Happy</note>';
811let textEncoder = new util.TextEncoder();
812let arrbuffer = textEncoder.encodeInto(strXml);
813let that = new xml.XmlPullParser(arrbuffer.buffer as object as ArrayBuffer);
814let str = "";
815function func(key: xml.EventType, value: xml.ParseInfo) {
816  str += 'key:' + key + ' value:' + value.getText() + ' ';
817  return true; // Determines whether to continually parse, which is used to continue or terminate parsing.
818}
819let options: xml.ParseOptions = {supportDoctype:true, ignoreNameSpace:true, tokenValueCallbackFunction:func}
820that.parse(options);
821console.log(str);
822// key:0 value: key:2 value: key:4 value:Happy key:3 value: key:1 value:
823```
824### isEmptyElementTag
825
826isEmptyElementTag(): boolean
827
828判断当前元素是否为空元素。
829
830**原子化服务API**:从API version 11 开始,该接口支持在原子化服务中使用。
831
832**系统能力:** SystemCapability.Utils.Lang
833
834**返回值:**
835
836| 类型    | 说明                         |
837| ------- | ---------------------------- |
838| boolean | 返回true,当前元素为空元素。 |
839
840**示例:**
841
842```ts
843import { util } from '@kit.ArkTS';
844
845let strXml =
846  '<?xml version="1.0" encoding="utf-8"?>' +
847  '<note importance="high" logged="true">' +
848    '<title/>' +
849  '</note>';
850let textEncoder = new util.TextEncoder();
851let arrbuffer = textEncoder.encodeInto(strXml);
852let that = new xml.XmlPullParser(arrbuffer.buffer as object as ArrayBuffer);
853let str = "";
854function func(key: xml.EventType, value: xml.ParseInfo) {
855  str += 'key:' + key + ' value:' + value.isEmptyElementTag() + ' ';
856  return true; // Determines whether to continually parse, which is used to continue or terminate parsing.
857}
858let options: xml.ParseOptions = {supportDoctype:true, ignoreNameSpace:true, tokenValueCallbackFunction:func}
859that.parse(options);
860console.log(str);
861// key:0 value:false key:2 value:false key:2 value:true key:3 value:false key:3 value:false key:1 value:false
862```
863### isWhitespace
864
865isWhitespace(): boolean
866
867判断当前事件是否仅包含空格字符。
868
869**原子化服务API**:从API version 11 开始,该接口支持在原子化服务中使用。
870
871**系统能力:** SystemCapability.Utils.Lang
872
873**返回值:**
874
875| 类型    | 说明                                   |
876| ------- | -------------------------------------- |
877| boolean | 返回true,当前文本事件仅包含空格字符。 |
878
879**示例:**
880
881```ts
882import { util } from '@kit.ArkTS';
883
884let strXml =
885  '<?xml version="1.0" encoding="utf-8"?>' +
886  '<note importance="high" logged="true">' +
887    '<title> </title>' +
888  '</note>';
889let textEncoder = new util.TextEncoder();
890let arrbuffer = textEncoder.encodeInto(strXml);
891let that = new xml.XmlPullParser(arrbuffer.buffer as object as ArrayBuffer);
892let str = "";
893function func(key: xml.EventType, value: xml.ParseInfo) {
894  str += 'key:' + key + ' value:' + value.isWhitespace() + ' ';
895  return true; // Determines whether to continually parse, which is used to continue or terminate parsing.
896}
897let options: xml.ParseOptions = {supportDoctype:true, ignoreNameSpace:true, tokenValueCallbackFunction:func}
898that.parse(options);
899console.log(str);
900// key:0 value:true key:2 value:false key:2 value:true key:10 value:true key:3 value:true key:3 value:true key:1 value:true
901```
902### getAttributeCount
903
904getAttributeCount(): number
905
906获取当前开始标记的属性数。
907
908**原子化服务API**:从API version 11 开始,该接口支持在原子化服务中使用。
909
910**系统能力:** SystemCapability.Utils.Lang
911
912**返回值:**
913| 类型   | 说明                   |
914| ------ | ---------------------- |
915| number | 当前开始标记的属性数。 |
916
917**示例:**
918
919```ts
920import { util } from '@kit.ArkTS';
921
922let strXml = '<?xml version="1.0" encoding="utf-8"?><note importance="high" logged="true"/>';
923let textEncoder = new util.TextEncoder();
924let arrbuffer = textEncoder.encodeInto(strXml);
925let that = new xml.XmlPullParser(arrbuffer.buffer as object as ArrayBuffer);
926let str = "";
927function func(key: xml.EventType, value: xml.ParseInfo) {
928  str += 'key:' + key + ' value:' + value.getAttributeCount() + ' ';
929  return true; // Determines whether to continually parse, which is used to continue or terminate parsing.
930}
931let options: xml.ParseOptions = {supportDoctype:true, ignoreNameSpace:true, tokenValueCallbackFunction:func}
932that.parse(options);
933console.log(str);
934// key:0 value:0 key:2 value:2 key:3 value:2 key:1 value:0
935```
936
937## EventType
938
939事件类型枚举。
940
941**原子化服务API**:从API version 11 开始,该接口支持在原子化服务中使用。
942
943**系统能力:** 以下各项对应的系统能力均为SystemCapability.Utils.Lang
944
945| 名称             | 值   | 说明                  |
946| ---------------- | ---- | --------------------- |
947| START_DOCUMENT   | 0    | 启动文件事件。        |
948| END_DOCUMENT     | 1    | 结束文件事件。        |
949| START_TAG        | 2    | 启动标签事件。        |
950| END_TAG          | 3    | 结束标签事件。        |
951| TEXT             | 4    | 文本事件。            |
952| CDSECT           | 5    | CDATA事件。           |
953| COMMENT          | 6    | XML注释事件。         |
954| DOCDECL          | 7    | XML文档类型声明事件。 |
955| INSTRUCTION      | 8    | XML处理指令声明事件。 |
956| ENTITY_REFERENCE | 9    | 实体引用事件。        |
957| WHITESPACE       | 10   | 空白事件。            |