随笔 - 383  文章 - 0  评论 - 0  阅读 - 35557 

1. 介绍
在Android系统中很多信息及配置文件都是以xml格式存储的,Android系统也提供SAX和DOM两种方式来解析XML文件,下面介绍其中比较简单的DOM方式。

2. 例程

1)       功能
解析xml文件内容,并显示在程序界面上

2)       关键字
Android, xml, dom, 解析

3)       可从此处下载可独立运行的代码
http://download.csdn.net/detail/xieyan0811/4117455

4)       核心代码及说明

package com.demo.xml;

 

import android.app.Activity;

import android.os.Bundle;

import android.widget.TextView;

import android.widget.LinearLayout;

import android.util.Log;

 

import org.w3c.dom.Element;

import org.w3c.dom.NodeList;

import org.w3c.dom.Document;

import javax.xml.parsers.DocumentBuilder;

import javax.xml.parsers.DocumentBuilderFactory;

import javax.xml.parsers.ParserConfigurationException;

import java.io.IOException;

import java.io.InputStream;

 

public class MyXmlActivity extends Activity {

        private String TAG ="demo";

 

        @Override

        public voidonCreate(Bundle savedInstanceState) {

                 super.onCreate(savedInstanceState);

                 setContentView(R.layout.main);

                 parseXml();

        }

 

        private voidparseXml() {

                 int i, j;

                 TextViewtext;

                 LinearLayoutlinear = new LinearLayout(this);

                 linear.setOrientation(LinearLayout.VERTICAL);

 

                 DocumentBuilderFactorydocFactory = DocumentBuilderFactory

                                    .newInstance();

                 DocumentBuilderdocBuilder;

                 Document doc= null;

                 InputStreaminStream = null;

                 try {

                           docBuilder= docFactory.newDocumentBuilder();

                           inStream= this.getResources().getAssets().open("test.xml");

                           doc= docBuilder.parse(inStream);

                           ElementrootEle = doc.getDocumentElement();

                           NodeListquestionNode = rootEle.getElementsByTagName("submenu");

                           intsubCount = questionNode.getLength();

                           for(i = 0; i < subCount; i++) {

                                    ElementsubEle = (Element) questionNode.item(i);

                                    StringsubTitle = subEle.getAttribute("title");

                                    Log.e(TAG,"title = " + subTitle);

                                    text= new TextView(this);

                                    text.setText(subTitle);

                                    linear.addView(text);

 

                                    NodeListitemNode = subEle.getElementsByTagName("item");

                                    intitemCount = itemNode.getLength();

                                    for(j = 0; j < itemCount; j++) {

                                             ElementoptionEle = (Element) itemNode.item(j);

                                             Stringdesc = optionEle.getAttribute("desc");

                                             Stringpos = optionEle.getAttribute("pos");

                                             Log.e(TAG,"desc = " + desc + ", pos = " + pos);

                                             text= new TextView(this);

                                             text.setText(desc+ ", " + pos);

                                             linear.addView(text);

                                    }

                           }

                 } catch(ParserConfigurationException e1) {

                           e1.printStackTrace();

                 } catch(IOException e) {

                           e.printStackTrace();

                 } catch(Exception e) {

                           e.printStackTrace();

                 }

                 setContentView(linear);

        }

};

 

// xml 内容

<?xml version="1.0" encoding="utf-8" ?>

<menu>

 <submenutitle="test1">

  <item desc="item1" pos="012" />

  <item desc="item2" pos="123" />

  </submenu>

 <submenutitle="test2">

  <item desc="item3" pos="234" />

  <item desc="item4" pos="456" />

  </submenu>
 <submenu title="test3">

  <item desc="item5" pos="567" />

  <item desc="item6" pos="678" />

  <item desc="item7" pos="789" />

  </submenu>

</menu>

3. 参考

1)       SAX教程:http://www.2cto.com/kf/201101/81739.html


(转载请注明出处)

posted on   xieyan0811  阅读(23)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示