Home  >  Article  >  Backend Development  >  Code details for generating and parsing data in Xml format

Code details for generating and parsing data in Xml format

黄舟
黄舟Original
2017-03-08 16:11:041804browse

1. Generation and analysis of Xml format data

Using xml as the carrier of data interaction is a very important function in Android. For example, weather forecast data, SMS backup data, and address record data can all be expressed in xml# The format of

## is transmitted through the network.

The XML format is written and displayed in the form of sticky notes, which is clear at a glance and easy to read and identify, as shown below:

<xml 头>
<student>
<name>张三</name>
<number>110001</number>
<sex>male</sex>
</student>

XML generation

If you use java code to implement it Such a string format can be assembled using StringBuilder: StringBuilder sb = new StringBuilder();

//数据保存到文件
sb.append("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
sb.append("<student>");
sb.append("<name>");
sb.append(name);
sb.append("</name>");
sb.append("<number>");
sb.append(number);
sb.append("</number>");
sb.append("<sex>");
sb.append(sex);
sb.append("</sex>");
sb.append("</student>");

Although the above code can also generate xml

files, it cannot Special characters are processed. For example, if the text message content contains the "5f557f62ae7ac7a14e0b1cb564790dfc" symbol, the xml

parser will not be able to complete the correct parsing. Therefore, the prerequisite for use is that you make sure that the data content does not have special characters.

And Android provides us with an API specifically used to generate XML data: ##XML parsing

1. DOM parsing

is an object-based API that stores all the contents of the XML file in the memory in the form of a document tree, and then allows the use of DOMAPI Traverse the XML tree and retrieve the required data so that the file can be manipulated as nodes according to the structure of the tree. Since DOM needs to store the entire XML file in the memory in the form of a document tree, which consumes a lot of memory, I don't mind using this method for parsing under Android.

2. SAX parsing

will scan the XML document line by line, trigger the parsing processor when a tag is encountered, and use event processing to parse the XML. It can process XML while reading the document. It is relatively fast and does not have to wait until the document is loaded. It also does not need to load the entire document into memory, so there is no problem of occupying memory and it can parse very large XML. However, SAX parsing can only be used to read XML data and cannot be added, deleted or modified.

3. PULL parsing is similar to SAX parsing and is also based on event processing. The PULL parser is an open source Java project that can be used in both Android applications and JavaEE programs. Android has integrated a PULL parser, so the most commonly used parsing method in android is PULL parsing.

Comparison between SAX and PULL parsing: The Pull parser operates similarly to the SAX

parser, both belonging to the event-driven mode. It provides similar events, such as start element and end element events. Use parser.next() to enter the next element and trigger the corresponding event. Events will be sent as numeric codes, so you can use a switch

to handle the events of interest. When the element starts to be parsed, call the parser.nextText() method to get the value of the next Text

type element.

The way the SAX parser works is to automatically push events into the event processor for processing, so you cannot control the active end of event processing; while the Pull

parser works by allowing you The application code actively obtains events from the parser. Because it actively obtains events, it can no longer obtain events and end parsing after the required conditions are met.

The code for using PULL mode to parse XML files under Android is as follows:

try {//
采用Android的api面向对象的生成xml文件.
// 1.得到xml文件的序列化器
XmlSerializer serializer = Xml.newSerializer();
// 2.指定序列化器的一些初始参数
File file = new File(getFilesDir(), name +".xml");
FileOutputStream os = new FileOutputStream(file);serializer.setOutput(os,
"utf-8");
// 3.写xml文件.
serializer.startDocument("utf-8",
true);//写开头serializer.startTag(null,
"student");//开始标签
serializer.startTag(null,"name");
serializer.text(name);//文本标签
serializer.endTag(null,"name");//结束标签
serializer.startTag(null,"number");
serializer.text(number);
serializer.endTag(null,"number");
serializer.startTag(null,"sex");
serializer.text(sex);
serializer.endTag(null,"sex");
serializer.endTag(null,"student");
serializer.endDocument();//写结尾
os.close();
Toast.makeText(this,"保存数据成功", 0).show();
} catch (Exception e) {e.printStackTrace();
Toast.makeText(this,"保存数据失败", 0).show();
}

The above is the detailed content of Code details for generating and parsing data in Xml format. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn