android xml 的解析
来源:互联网 发布:ios wkwebview js 编辑:程序博客网 时间:2024/05/16 19:24
android xml 的解析.
1.普通型
Xml代码
1. <?xml version=”1.0″ ?>
2. <statuses>
3. <status>
4. <source1>a</source1>
5. <source2>a</source2>
6. <source2>a</source2>
7. </status>
8. <statuses>
9. </xml>
解析代码.
Java代码
1. try{
2. xpp.setInput( new StringReader ( “xml string” ) );
3. XmlPullParser parser = XmlPullParserFactory.newInstance()
4. .newPullParser();
5. int eventType = parser.getEventType();
6. while (eventType != XmlPullParser.END_DOCUMENT) {
7. if (eventType == XmlPullParser.START_TAG) {
8. String name = parser.getName();
9. Log.v(“tag”,parser.getName()+”=”+parser.next());
10. }
11. eventType = parser.next();
12. }
13. } catch (XmlPullParserException e) {
14. } catch (Exception e) {
15. }
2.嵌套子类.
Xml代码
1. <?xml version=”1.0″ encoding=”UTF-8″ standalone=”no”?>
2. <statuses>
3. <status>
4. <source1>a</source1>
5. <source2>a</source2>
6. <source2>a</source2>
7. <user>
8. <source1>a</source1>
9. <source2>a</source2>
10. <source2>a</source2>
11. </user>
12. </status>
13. <status>
14. <source1>a</source1>
15. <source2>a</source2>
16. <source2>a</source2>
17. <user>
18. <source1>a</source1>
19. <source2>a</source2>
20. <source2>a</source2>
21. </user>
22. </status>
23. <statuses>
24. </xml>
解析代码:
Java代码
1. try{
2. XmlPullParser parser = XmlPullParserFactory.newInstance()
3. .newPullParser();
4. xpp.setInput( new StringReader ( xml string ) );
5. parser.next();
6. parser.require(XmlPullParser.START_TAG, null, “statuses”);
7. while (parser.nextTag() != XmlPullParser.END_TAG) {
8. parser.require(XmlPullParser.START_TAG, null, “status”);
9. for (int i=0;i<3;i++){
10. parser.nextTag();
11. Log.v(“tag”,parser.getName()+”=”+ parser.nextText());
12. }
13. while (parser.nextTag() != XmlPullParser.END_TAG) {
14. parser.require(XmlPullParser.START_TAG, null, “user”);
15. while (parser.nextTag() != XmlPullParser.END_TAG) {
16. String name = parser.getName();
17. String text2 = parser.nextText();
18. Log.v(“tag”,”text2″+text2);
19. parser.require(XmlPullParser.END_TAG, null, name);
20. }
21. parser.require(XmlPullParser.END_TAG, null, “user”);
22. }
23. parser.require(XmlPullParser.END_TAG, null, “status”);
24. }
25. parser.require(XmlPullParser.END_TAG, null, “statuses”);
26. parser.next();
27. parser.require(XmlPullParser.END_DOCUMENT, null, null);
28. // global.userinfo.dump();
29. } catch (XmlPullParserException e) {
30. } catch (Exception e) {
31. }
最里面那个可以满足 <user>也是循环. 如果<user>不循环.
可以使用.
Java代码
1. for (int i=0;i<3;i++){
2. parser.nextTag();
3. Log.v(“tag”,parser.getName()+”=”+ parser.nextText());
4. }
代替.
Ø 读取XML格式文件
ü 首先通过调用资源对象的getXml()函数,获取到XML解析器XmlPullParser
ü XmlPullParser是Android平台标准的XML解析器,这项技术来自一个开源的XML解析API项目XMLPULL
Ø ResourceFileDemo示例中关于读取XML文件的核心代码如下
Ø XmlPullParser parser = resources.getXml(R.xml.people);
Ø String msg = "";
Ø try {
Ø while (parser.next() != XmlPullParser.END_DOCUMENT) {
Ø String people = parser.getName();
Ø String name = null;
Ø String age = null;
Ø String height = null;
Ø if ((people != null) && people.equals("person")) {
Ø int count = parser.getAttributeCount();
Ø for (int i = 0; i < count; i++) {
Ø String attrName = parser.getAttributeName(i);
Ø String attrValue = parser.getAttributeValue(i);
Ø if ((attrName != null) && attrName.equals("name")) {
Ø name = attrValue;
Ø } else if ((attrName != null) && attrName.equals("age")) {
Ø age = attrValue;
Ø } else if ((attrName != null) && attrName.equals("height")) {
Ø height = attrValue;
Ø }
Ø }
22. if ((name != null) && (age != null) && (height != null)) {
23. msg += "姓名:"+name+",年龄:"+age+",身高:"+height+"\n";
24. }
25. }
26. }
27. } catch (Exception e) {
28. Log.e("ResourceFileDemo", e.getMessage(), e);
29. }
30. displayView.setText(msg);
1. 第1行代码通过资源对象的getXml()函数获取到XML解析器
2. 第4行代码的parser.next()方法可以获取到高等级的解析事件,并通过对比确定事件类型
3. 第5行代码使用getName()函数获得元素的名称
4. 第10行代码使用getAttributeCount()函数获取元素的属性数量
ü 第12行代码通过getAttributeName()函数得到属性名称
ü 第14行到第19行代码通过分析属性名获取到正确的属性值
ü 第23行代码将属性值整理成需要显示的信息
Ø XmlPullParser的XML事件类型
事件类型
说明
START_TAG
读取到标签开始标志
TEXT
读取文本内容
END_TAG
读取到标签结束标志
END_DOCUMENT
文档末尾
- android的xml解析
- android XML的解析
- android xml 的解析.
- Android的XML解析
- Android xml的解析
- android xml 的解析
- Android Xml的解析
- android关于xml的解析
- 六、android的xml解析
- android xml的pull解析
- 实用的android xml解析
- android xml文件的解析
- Android中XML的解析
- Android对XML的解析
- android解析xml的方式
- Android的sax解析xml
- Android xml数据的解析
- android中XML的解析
- html5侧栏元素aside
- 实战rman恢复(1)丢失控制文件的恢复
- IO流之键盘录入与控制台
- Redis怎么扩展为多CPU(多核)
- 实战rman恢复(1)丢失控制文件的恢复
- android xml 的解析
- ssh 无密码验证 及 ssh localhost 仍然需要密码的解决方案
- Eclipse EGit - Pull Failed Dirty Worktree
- JS实现文字滚动效果
- C#语法之流程控制结构
- 两层多态,四个类
- Android客户端与后台服务器的数据交互
- Linux常用命令详解(四)_文件过滤分割、统计、kill
- Nginx 页面缓存指令