使用pull解析用xml方式存储的数据
来源:互联网 发布:mac怎么玩dota2国服 编辑:程序博客网 时间:2024/06/16 00:06
xml数据格式通常有3种解析方式:dom,sax,pull,现在一般用pull方式,pull是安卓内置的解析器.
使用pull解析用xml的话,xml文件是一层层节点往里剖析的,例如下面的xml,从进入xinxi节点开始,一直往里剖析节点,并根据用户自己的条件判断得到相应的数据
(这里的lianxiren在下面的代码中是被dianhuaben替换了)
流程:
1.调用java输入流读取xml文件
2.用ArrayList存放解析后的所有数据
3.定义一个相应的数据类,用来存放解析后的相应数据
4.定义节点名
5.通过XmlPullParserFactory获得XmlpullParser格式的数据
6.调用setInput方法为读到的数据设置编码格式
7.调用getEventType方法获得操作事件,并对数据进行解析
代码:
在UI下创建两个EditText做显示得到的数据,再创建一个Button按钮来触发读取数据
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_pull_xml); //得到UI界面的两个EditText控件 nameEditText = (EditText) findViewById(R.id.pullNameET); phoneEditText = (EditText) findViewById(R.id.pullPhoneET); } //按键事件public void pullXmlOnClick(View v) throws IOException, XmlPullParserException { //调用java输入流读取xml文件,这里是读取存储在SD卡里的Xml文件,具体的操作可以参考上一篇博客 FileInputStream in = new FileInputStream(android.os.Environment.getExternalStorageDirectory()+"/dianhuaben.xml"); //用ArrayList存放解析后的所有数据,这里PullXml是自己定义的一个类,用于剖析Xml文件数据 PullXml pullXml = new PullXml(); //调用PullXml的方法getpull(in),返回一个ArrayList对象 ArrayList<Lianxiren> list = pullXml.getpull(in); //从得到的list中得到保存的数据,并显示出来 nameEditText.setText(list.get(0).getName()); phoneEditText.setText(list.get(0).getPhone()); }
Lianxiren类:
//自定义的Lianxiren类 public class Lianxiren { String name; String phone; //里面两个参数,并且有获取和设置这两个参数的方法 public String getName() { return name; } public String getPhone() { return phone; } public void setName(String name) { this.name = name; } public void setPhone(String phone) { this.phone = phone; }}
具体的剖析过程:
代码:
public class PullXml { //定义的剖析方法,参数为得到的文件流,这里的Lianxiren是自定义的一个数据类 public ArrayList<Lianxiren> getpull(InputStream in) throws XmlPullParserException, IOException { //创建一个类型为Lianxiren的ArrayList用于存放解析后的所有数据 ArrayList<Lianxiren> list = new ArrayList<Lianxiren>(); //定义Lianxiren对象来加载数据以及jiedian对象用于判断节点的所属 Lianxiren ren = null; String jiedian = null; //通过XmlPullParserFactory获得XmlpullParser格式的数据 XmlPullParserFactory factory = XmlPullParserFactory.newInstance(); XmlPullParser xpp = factory.newPullParser(); //调用setInput方法为读到的数据设置编码格式 xpp.setInput(in,"utf-8"); //调用getEventType方法获得操作事件,并对数据进行解析 int type = xpp.getEventType(); //只要不是在文档最后就一直解析 while (type!=XmlPullParser.END_DOCUMENT){ if(type==XmlPullParser.START_TAG){ //如果解析到节点开头 jiedian = xpp.getName(); //就获得节点名 if(jiedian.equals("dianhuaben")){ //如果节点是dianhuaben ren = new Lianxiren(); //创建相应的类 } } else if(type==XmlPullParser.TEXT){ //如果解析到数据内容 if(jiedian.equals("name")){ //如果是节点是name ren.setName(xpp.getText()); //就把name节点数据存放到类里 } else if(jiedian.equals("phone")){ //如果是节点phone ren.setPhone(xpp.getText()); //就把phone节点数据存放到类里 } } else if(type==XmlPullParser.END_TAG){ //如果解析到节点结尾 这个结尾是相应标签的结尾 //假如这里是解析<dianhuaben>的节点,那么这里的结尾就是</dianhuaben> jiedian=xpp.getName(); //就获得节点名 if(jiedian.equals("dianhuaben")){ //如果是节点是dianhuaben,也就是首尾节点一样。 list.add(ren); //就把解析到类里的数据存放到ArrayList里 ren = null; //并清空相应类里的数据 } } type = xpp.next(); //如果dianhuaben不是唯一的节点,那么就继续开始下一轮节点解析 } return list; //最后返回得到的数据 }}
1 0
- 使用pull解析用xml方式存储的数据
- android使用pull的方式解析xml
- 使用PULL方式解析XML
- 使用pull方式解析XML
- 解析XML格式数据-Pull解析方式
- XML的pull解析方式
- Xml的PULL解析方式
- Xml的pull解析方式
- Pull的xml解析方式
- Xml解析方式之Pull解析器的使用
- Android数据存储---Pull解析Xml文件
- android使用pull方式解析xml
- android 使用pull方式解析xml文件
- android 使用pull 方式解析 xml文件
- 使用pull方式解析xml文件
- Android使用Pull方式解析XML
- Pull解析Xml方式
- PULL方式解析xml
- 随笔
- Unity 入门 物理系统中 添加力
- hdu 5500 Reorder the books 思维
- malloc,calloc,ralloc
- 有关搜索引擎的思考与实用技巧的总结(Google)
- 使用pull解析用xml方式存储的数据
- linux下pm子系统
- 图解 Session(会话)
- 一张纸折叠多少次,高度不小于珠穆朗玛峰的高度
- 客户端访问scan IP出现ora12545错误
- 第46课:Spark中的新解析引擎Catalyst源码初探
- Notification的用法
- android bluetooth stack-init
- 封装