xml是安卓使用的吗(新手使用android的XML(DOM)解析问题,指定路径XML如何读取)
本文目录
新手使用android的XML(DOM)解析问题,指定路径XML如何读取
一、在Android应用中的XML文件来源1、本地xml文件 本地XML文件可以放在应用根目录assets文件夹、res/xml、res/raw、SDcard卡、应用的data目录等;除res/xml可直接通过getXml(int id)获取XML文档,返回一个解析器对象(XmlResourceParer:XmlResourceParer是XmlPullParser的子类),其它位置情况都可以获取XML文档,返回一个Inputstream对象,进行读取数据,获取方法分别如下:a.在res/xml目录下(推荐使用): view plaincopyXmlResourceParser xmlParser = this.getResources().getXml(R.xml.XXX); b.在res/xml、res/raw目录下: view plaincopyInputStream inputStream = this.getResources().openRawResource(R.xml.XXX); c.在assets文件夹下(本人测试发现通过此方法获取的XML文档不能带有首行:《?xml version="1.0" encoding="utf-8"?》,否则解析报错,具体原因未查明,知道原因请回复交流): view plaincopyInputStream inputStream = getResources().getAssets().open(fileName); d.在应用指定目录下(SDcard,应用data目录等): view plaincopy// path路径根据实际项目修改,此次获取SDcard根目录 String path = Environment.getExternalStorageDirectory().toString(); File xmlFlie = new File(path+fileName); InputStream inputStream = new FileInputStream(xmlFlie); 2、通过url得到的xml文件 很多时候需要解析xml文件都用于客户端与服务器之间的数据交互,比如解析google天气预报信息,或自己项目内定的一些XML数据结构,其中通过URL,使用DefaultHTTPClient get请求获取XML文件方法如下: view plaincopy/** * 读取url的xml资源 转成String * @param url * @return 返回 读取url的xml字符串 */ public String getStringByUrl(String url) { String outputString = ""; // DefaultHttpClient ***隐藏网址*** // HttpGet ***隐藏网址*** // ResponseHandler ResponseHandler《String》 responseHandler = new BasicResponseHandler(); try { ***隐藏网址*** outputString = new String(outputString.getBytes("ISO-8859-1"), "utf-8"); // 解决中文乱码 Log.i("HttpClientConnector", "连接成功"); } catch (Exception e) { Log.i("HttpClientConnector", "连接失败"); e.printStackTrace(); } ***隐藏网址*** return outputString; } 二、XML文件的解析方式 能够运用在Android系统上解析XML文件的常用有三种方式:DOM、SAX和PULL,其中DOM解析XML是先把XML文件读进内存中,再通过接口获取数据,该方法使用相对小的XML文件,移动设备往往受硬件性能影响,如果XML文件比较大使用DOM解析往往效率跟不上;SAX和PULL都是采用事件驱动方式来进行解析,在Android中的事件机制是基于回调函数。 本例旨在考虑简单方便性,综合考虑选择了PULL解析,PULL解析器是一个开源项目,Android平台已经内置了PULL解析器,同时Android系统本身也是使用PULL解析器来解析各种XML文档。 1、事件回调类型 PULL解析XML文件时,回调XmlResourceParser内定义表示文档开头结束和节点开头结束的数值(事件回调类型),表示如下:a.读取到XML文档开头(声明)返回:XmlPullParser.START_DOCUMENT(0)b.读取到XML文档结束返回:XmlPullParser.END_DOCUMENT (1)c.读取到XML节点开始返回:XmlPullParser.START_TAG (2)d.读取到XML节点结束返回:XmlPullParser.END_TAG (3)e.读取到XML文本返回:XmlPullParser.TEXT (4) 2、XmlPullParser有几个主要方法(更多查阅Android APIs):a.XmlPullParser.getEventType() : Returns the type of the current event (START_TAG, END_TAG, TEXT, etc.) 【获取当前事件回调类型】b.XmlPullParser.getName():For START_TAG or END_TAG events, the (local) name of the current element is returned when namespaces are enabled.【获取当前节点名字】c.XmlPullParser.getAttributeValue(int index):Returns the given attributes value.【根据id获取节点属性值】d.XmlPullParser.getAttributeValue(String namespace, String name):Returns the attributes value identified by namespace URI and namespace localName.【根据name获取节点属性值】e.XmlPullParser.netxText():If current event is START_TAG then if next element is TEXT then element content is returned or if next event is END_TAG then empty string is returned, otherwise exception is thrown.【回调节点START_TAG时,通过此方法获取节点内容】3、实际编码中如何使用 在实际编码中,主要根据事件回调类型,结合被解析的XML结构进行解析提取数据,PULL解析XML文件的主要模式如下,更具体使用看本文提供的例子: view plaincopytry { //开始解析事件 int eventType = parser.getEventType(); //处理事件,不碰到文档结束就一直处理 while (eventType != XmlPullParser.END_DOCUMENT) { //因为定义了一堆静态常量,所以这里可以用switch switch (eventType) { case XmlPullParser.START_DOCUMENT: // 不做任何操作或初开始化数据 break; case XmlPullParser.START_TAG: // 解析XML节点数据 // 获取当前标签名字 String tagName = parser.getName(); if(tagName.equals("XXXTAGXXX")){ // 通过getAttributeValue 和 netxText解析节点的属性值和节点值 } break; case XmlPullParser.END_TAG: // 单节点完成,可往集合里边添加新的数据 break; case XmlPullParser.END_DOCUMENT: break; } // 别忘了用next方法处理下一个事件,不然就会死循环 eventType = parser.next(); } } catch (XmlPullParserException e) { e.printStackTrace(); }catch (IOException e) { e.printStackTrace(); }
android中使用XML来存放数据的问题
可以用SharedPreferences去做,这些文件会保存在"/data/data/包名/shared_prefs"目录下。也可以放到res/xml文件夹下,xml文件夹是自己新建的文件夹,通过getResources().getXml(R.xml.test.xml)去获得对象,通过pull或其他方式解析。再就是写到SD卡中了,这个比较麻烦。
Android项目中的res/xml/是干什么用的
res文件夹里面放的全部都是这个android应用中使用到的资源文件,也就是,图片文件,声音文件,文本文件,布局文件,动画文件,等等等等!!XML,在android中除了xml的基本作用以外,主要是写布局文件用的,你平时看到的那些android程序那些界面,都是用xml布局写出来的,除此之外,还可以用xml定义一些动画,以及一些常用的常量等 (: xoyu )
安卓为什么使用xml作为布局文件
顾名思义,布局文件,就是管理Activity中的布局的文件,各种标签,有各种标签的作用,比如:LinearLayout:指定线性布局FrameLayout:指定帧布局Button:指定按钮每种标签,在官方文档中都有使用方法。
更多文章:
synthesia(下载安装一个安卓液晶电视板的synthesia软件要怎么交费解锁)
2024年5月7日 21:55
精品成品网站入口(请推荐个你认为最值得去的网站,比较有特色的那种精品网站!)
2024年6月25日 12:50
spartan浏览器(win10怎么开启spartan浏览器)
2023年5月22日 04:20
nba2k21下载安卓版(在哪里可以下载NBA2k21安卓手机中文版)
2024年6月30日 06:55
轩辕传奇药师弑神技能(轩辕传奇手游弑神有什么用 弑神攻击提升方法解说)
2024年7月3日 19:06
autocad2014注册机在什么位置(CAD2014版安装后怎么激活注册机在哪里找到)
2024年10月11日 11:15