import org.xmlpull.v1.XmlPullParser;//包含解析XML文件类的包 import org.xmlpull.v1.XmlPullParserException;//处理异常 importorg.xmlpull.v1.XmlSerializer;//包含写入XML文件类的包
<peopleinfo>
<peopletag="item1">
<id>1</id>
<name>杜甫</name>
<age>30</age>
<height>1.75</height>
</people>
</peopleinfo>
XmlPullParser parser= getResources().getXml(R.xml.peopleinfo);
|
[b]相关函数或变量[/b] |
[b]说明[/b] | [b]示例[/b] |
| [b]XmlPullParser.[i]START_DOCUMENT[/i][/b] | [b]文档开始标识,根元素[/b] | [b]<peopleinfo>[/b] |
| [b]XmlPullParser.[i]END_DOCUMENT[/i][/b] | [b]文档结束标识[/b] | [b]</peopleinfo>[/b] |
| [b]XmlPullParser.[i]START_TAG[/i][/b] | [b]元素开始标识[/b] | [b]<people>[/b] |
| [b]XmlPullParser.[i]END_TAG[/i][/b] | [b]元素结束标识[/b] | [b]</people>[/b] |
| [b]getEventType()[/b] | [b]获取当元素的类型 (如START_TAG, END_TAG, TEXT, etc.)[/b] | [b]如<peopleinfo>[/b] [b]的类型为[i]START_DOCUMENT[/i][/b] |
| [b]next()[/b] | [b]获取下一个待解析元素[/b] | [b]事件表示<>括号中的一个项[/b] |
| [b]getName()[/b] | [b]获取当前元素的名字[/b] | [b]如读取到<age>,返回值为”age”[/b] |
| [b]nextText()[/b] | [b]返回当前元素所对应的文本值[/b] | [b]如事件为<height>时,返回1.75[/b] |
| [b]getAttributeName(int index)[/b] | [b]获取当前元素中属性名[/b] | [b]如tag[/b] |
| [b]getAttributeValue(int index)[/b] | [b]获取当前元素中属性的值[/b] | [b]如[i]"item1"[/i][/b] |
XmlSerializer serializer = Xml.newSerializer(); serializer.setOutput(writer); //… writer.flush()
|
[b]相关函数[/b] |
[b]说明[/b] | [b]示例[/b] |
| [b][url=http://developer.android.com/reference/org/xmlpull/v1/XmlSerializer.html#setOutput(java.io.Writer)]setOutput[/url]([url=http://developer.android.com/reference/java/io/Writer.html]Writer[/url] writer)[/b] | [b]设置输出的Writer对象[/b] | [b] [/b] |
| [b]startDocument([url=http://developer.android.com/reference/java/lang/String.html]String[/url] encoding, [url=http://developer.android.com/reference/java/lang/Boolean.html]Boolean[/url] standalone);[/b] | [b]写入XML文件的起始标识语句,必须在[url=http://developer.android.com/reference/org/xmlpull/v1/XmlSerializer.html#setOutput(java.io.Writer)]setOutput[/url]后被调用[/b] | [b]<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>[/b] |
| [b]startTag([url=http://developer.android.com/reference/java/lang/String.html]String[/url] namespace, [url=http://developer.android.com/reference/java/lang/String.html]String[/url] name);[/b] | [b]写入开始元素标识[/b] | [b]如<people>,<age>[/b] |
| [b]attribute([url=http://developer.android.com/reference/java/lang/String.html]String[/url] namespace, [url=http://developer.android.com/reference/java/lang/String.html]String[/url] name, [url=http://developer.android.com/reference/java/lang/String.html]String[/url] value); [/b] | [b] [/b] | [b]如tag=”people1”[/b] |
| [b]text([url=http://developer.android.com/reference/java/lang/String.html]String[/url] text)[/b] | [b]写入元素值[/b] | [b]如:杜甫[/b] |
| [b]endTag([url=http://developer.android.com/reference/java/lang/String.html]String[/url] namespace, [url=http://developer.android.com/reference/java/lang/String.html]String[/url] name)[/b] | [b]写入元素结束标识[/b] | [b]如</people>,</age>[/b] |
| [b]endDocument(); [/b] | [b]写入文档结束标记[/b] | [b] [/b] |
package aaron.android.SQLiteDamon;
import java.io.IOException;
import java.io.Writer;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
import org.xmlpull.v1.XmlSerializer;
import android.util.Log;
public class XmlPullHelper {
private XmlPullParser parser;
private XmlSerializer serializer;
private ArrayList<Map<String, Object>> contents=new ArrayList<Map<String,Object>>();
private Map<String,Object> map=null;
public XmlPullHelper(XmlPullParser parser,XmlSerializer serial){
this.parser=parser;
this.serializer = serial;
}
/**
* 将xml文件中的所有节点的数据解析后保存在一个ArrayList中返回
* @param nodeName:数据项的名称,这里为"people"
* @param attr:数据项的属性,如id,name,age,height
* @return 解析该xml文件数据的结果
* @throws XmlPullParserException
* @throws IOException
*/
public ArrayList<Map<String,Object>> xmlPull(String nodeName,String[] attr) throws XmlPullParserException, IOException{
//循环读取所有的元素
while(parser.next()!=XmlPullParser.END_DOCUMENT){
switch(parser.getEventType()){
case XmlPullParser.START_DOCUMENT:
break;
case XmlPullParser.START_TAG:{ //元素开始标识
//判断是否为所需要的数据项,如果是,在初始化一个map用于保存该数据项的值
if(parser.getName()!=null&&parser.getName().equals(nodeName)){
map=new HashMap<String, Object>();
//循环读取该元素中所有的属性
for(int j=0;j<parser.getAttributeCount();j++)
map.put(parser.getAttributeName(j), parser.getAttributeValue(j));//添加属性的值,如tag="item1"
}
else if(map!=null){
for(int i=0;i<attr.length;i++){
if(parser.getName()!=null&&parser.getName().equals(attr[i])){//添加子元素的值,如<name>张三</name>
map.put(attr[i],parser.nextText());
}
}
}
break;
}
case XmlPullParser.END_TAG: {//元素结尾标识
//判断是否为一个数据项的结束,如果是,将该数据项的数据添加到数据集contents中
if(parser.getName().equals(nodeName)&&map!=null){
contents.add(map);
map=null;
}
break;
}
}
}
return contents;
}
/**
* 将给定的数据集写入XML文件
* @param fileName: 根元素名,默认设为跟文件名相同,如"peopleinfo"
* @param nodeName: 数据项名 如"people"
* @param attr: 数据项的属性 如id,name,age,height
* @param con: 待写入的数据集
* @throws XmlPullParserException
* @throws IOException
*/
public void xmlWrite(String fileName,String nodeName,String[] attr,ArrayList<Map<String,Object>> con) throws XmlPullParserException, IOException{
serializer.startDocument("UTF-8", true);
serializer.startTag(null, fileName);//开始根元素标签<peopleinfo>
for(int i=0;i<con.size();i++)
{
//开始元素标签<people>
serializer.startTag(null, nodeName);
//标签people属性
serializer.attribute(null, "tag", "people"+i);
//循环将子节点写入元素id,name,age,height
for(int j=0;j<attr.length;j++)
{
serializer.startTag(null, attr[j]);
serializer.text(con.get(i).get(attr[j]).toString());
serializer.endTag(null, attr[j]);
}
//结束标签</people>
serializer.endTag(null, nodeName);
}
//结束标签</peopleinfo>
serializer.endTag(null, fileName);
//结束文档标记
serializer.endDocument();
}
}
//定义数据集对象contents用于保存从XML文件中读取的数据
ArrayList<Map<String, Object>> contents = null;
//将数据写入XML文件,并保存到SD卡中
if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
File sdCardDir = Environment.getExternalStorageDirectory();//获取SDCard目录
File saveFile = new File(sdCardDir, "peopleinfo.xml");
FileWriter w=new FileWriter(saveFile);
XmlSerializer serializer = Xml.newSerializer();
XmlPullHelper xHelper=new XmlPullHelper(null,serializer);
//待写入的子元素标签
String []items={"id","name","age","height"};
//将Writer对象传递给 serializer
serializer.setOutput(w);
xHelper.xmlWrite("peopleinfo", "people", items, contents);//调用写入方法
w.flush(); //将serializer中数据写入文件
w.close();
}
//读XML文件,解析并保存在数据集contents
XmlPullParser parser = getResources().getXml(R.xml.peopleinfo);
XmlPullHelper xHelper=new XmlPullHelper(parser,null);
String []items={"id","name","age","height"};
try{
contents=xHelper.xmlPull("people", items);//调用解析方法
}
catch(Exception e){
Log.e("XmlPullParser",e.getMessage(),e);
}
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有