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>
Copy after login
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>");
Copy after login
Although the above code can also generate xml
files, it cannot Special characters are processed. For example, if the text message content contains the ">" 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();
}
Copy after login
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!