xml文件的生成(文件生成的时候一定要注意,有开头就有结尾)
public void onClick(View view) {
//1创建xml的序列化器
XmlSerializer xmlSerializer = Xml.
newSerializer()
;
/**
* 参数一:编码utf-8
* 参数二:当前的xml是否是独立的,填true即可(文档是否独立)
*/
try {
//2创建输出流,把序列化对象向指定的文件中写
FileOutputStream outputStream =
MainActivity.
this.openFileOutput(
"aa.xml", MODE_PRIVATE)
;
//序列化器指定输出位置
/**
* 参数一:输出流
* 参数二:编码方式
*/
xmlSerializer.setOutput(outputStream
, "utf-9")
;
//3写xml的第一行
xmlSerializer.startDocument(
"utf-8", true)
;
/**
* 参数一:命名空间的名字
* 参数二:标签的名字
*/
xmlSerializer.startTag(
null, "smses")
;
for (
int i =
0; i <
6; i++) {
xmlSerializer.startTag(
null, "sms")
;
//短语内容
xmlSerializer.startTag(
null, "dody")
;
xmlSerializer.text(
"内容")
;//写文本
xmlSerializer.endTag(
null, "body")
;
//地址
xmlSerializer.startTag(
null, "address")
;
xmlSerializer.text(
"上海")
;
xmlSerializer.endTag(
null, "address")
;
//时间
xmlSerializer.text(
"1993-12-01")
;
xmlSerializer.startTag(
null, "time")
;
xmlSerializer.endTag(
null, "time")
;
xmlSerializer.endTag(
null, "sms")
;
}
//结束标签
xmlSerializer.endTag(
"null", "smses")
;
//头标签的结束标签
xmlSerializer.endDocument()
;
}
catch (Exception e) {
e.printStackTrace()
;
}
}
二:xml 的解析
xml的解析方式主要有三种(面试题)
1dom 解析:将xml生成一个 树结构,再进行解析
2sax解析:一行一行的解析
3pull 解析:一行一行的解析,适合Android
手动解析xml
//1获取xmlpull 的解析器
XmlPullParser xmlPullParser = Xml.
newPullParser()
;
//2获取要解析的对象
/**
* 参数一:要解析文件的流
* 参数二:编码格式
*/
try {
xmlPullParser.setInput(MainActivity.
this.openFileInput(
"aa.xml")
, "utf-8")
;
int type
;
while ((type = xmlPullParser.next()) != XmlPullParser.
END_DOCUMENT) {
//如果向下移动不是xml的document的根节点继续解析
if (type == XmlPullParser.
START_DOCUMENT) {
//开始解析头文件(解析头文件的时候一般不做操作)
}
else if (type == XmlPullParser.
START_TAG) {
//如果是解析到starttag标签
String name = xmlPullParser.getText()
;//获取当前标签的名字
if (name.equals(
"smses")) {
//创建集合用来存储xml中的对象
lst =
new ArrayList<>()
;
}
else if (name.equals(
"sms")) {
//创建实体类
sms =
new Smes()
;
}
else if (name.equals(
"body")) {
//实体类赋值
sms.setBody(xmlPullParser.nextText())
;//xmlPullParser.nextText()通过这个方法获取当标签中值
}
else if (name.equals(
"time")) {
sms.setTime(xmlPullParser.nextText())
;
}
else if (name.equals(
"address")) {
sms.setAddress(xmlPullParser.nextText())
;
}
}
else if (xmlPullParser.next() == XmlPullParser.
END_TAG) {
String name = xmlPullParser.getText()
;
if (name.equals(
"sms")) {
lst.add(
sms)
;
}
}
}
转载请注明原文地址: https://ju.6miu.com/read-450345.html