• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# XML Generation
2
3
4XML is a widely supported data exchange format used by various systems and applications. For example, web services often transmit structured data in XML format.
5
6
7XML can also serve as a messaging format for communication between nodes in distributed systems.
8
9
10## Precautions
11
12- XML tags must always appear in pairs: one start tag and one end tag.
13
14- XML tags are case sensitive, meaning that the case of the start and end tags must match.
15
16
17## How to Develop
18
19The XML module provides the **XmlSerializer** class to generate XML data. This class takes a fixed-length ArrayBuffer or DataView object as input, which is used to store the generated XML data.
20
21You can call various methods to write different content. For example, call **startElement(name: string)** to write the start tag of an element and **setText(text: string)** to write the tag value.
22
23For details about the APIs of the XML module, see [@ohos.xml (XML Parsing and Generation)](../reference/apis-arkts/js-apis-xml.md). By calling the appropriate functions as needed, you can generate a complete XML document.
24
251. Import the module.
26
27   ```ts
28   import { xml, util } from '@kit.ArkTS';
29   ```
30
312. Create a buffer and construct an XmlSerializer object, either based on an ArrayBuffer or a DataView object.
32
33   ```ts
34   // Method 1: Create an XmlSerializer object based on ArrayBuffer.
35   let arrayBuffer: ArrayBuffer = new ArrayBuffer(2048); // Create a 2048-byte ArrayBuffer.
36   let serializer: xml.XmlSerializer = new xml.XmlSerializer(arrayBuffer); // Create an XmlSerializer object based on the ArrayBuffer.
37
38   // Method 2: Create an XmlSerializer object based on DataView.
39   // let arrayBuffer: ArrayBuffer = new ArrayBuffer(2048);
40   // let dataView: DataView = new DataView(arrayBuffer);
41   // let serializer: xml.XmlSerializer = new xml.XmlSerializer(dataView);
42   ```
43
443. Call the functions to generate XML data.
45
46   ```ts
47   serializer.setDeclaration(); // Write the XML declaration.
48   serializer.startElement('bookstore'); // Write the start tag of an element.
49   serializer.startElement('book'); // Write the start tag of a nested element.
50   serializer.setAttributes('category', 'COOKING'); // Write attributes and attribute values.
51   serializer.startElement('title');
52   serializer.setAttributes('lang', 'en');
53   serializer.setText('Everyday'); // Write the tag value.
54   serializer.endElement(); // Write the end flag.
55   serializer.startElement('author');
56   serializer.setText('Giana');
57   serializer.endElement();
58   serializer.startElement('year');
59   serializer.setText('2005');
60   serializer.endElement();
61   serializer.endElement();
62   serializer.endElement();
63   ```
64
654. Use **Uint8Array** to manipulate the ArrayBuffer, use **TextDecoder** to decode the Uint8Array, and output it.
66
67   ```ts
68   let uint8Array: Uint8Array = new Uint8Array(arrayBuffer); // Use Uint8Array to read data from the ArrayBuffer.
69   let textDecoder: util.TextDecoder = util.TextDecoder.create(); // Call the TextDecoder class of the util module.
70   let result: string = textDecoder.decodeToString(uint8Array); // Decode the Uint8Array.
71   console.info(result);
72   ```
73
74   The output is as follows:
75
76   ```
77   <?xml version="1.0" encoding="utf-8"?><bookstore>
78     <book category="COOKING">
79       <title lang="en">Everyday</title>
80       <author>Giana</author>
81       <year>2005</year>
82     </book>
83   </bookstore>
84   ```
85