`
jk138
  • 浏览: 153934 次
  • 性别: Icon_minigender_1
  • 来自: 茂名
社区版块
存档分类
最新评论

Android中创建与几种解析xml的方法!

阅读更多

第一步:新建一个Android工程,命名为XmlDemo.

第二步:修改main.xml布局文件,代码如下:

<?xml version="1.0" encoding="utf-8"?>  
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
    android:orientation="vertical"  
    android:layout_width="fill_parent"  
    android:layout_height="fill_parent"  
    >  
    <Button  
        android:id="@+id/btn1"  
        android:layout_width="fill_parent"   
        android:layout_height="wrap_content"   
        android:text="创建XML文件"  
    />  
    <Button  
        android:id="@+id/btn2"  
        android:layout_width="fill_parent"   
        android:layout_height="wrap_content"   
        android:text="DOM解析XML"  
    />  
    <Button  
        android:id="@+id/btn3"  
        android:layout_width="fill_parent"   
        android:layout_height="wrap_content"   
        android:text="XmlPullParse解析XML"  
    />  
    <TextView  
        android:id="@+id/result"  
        android:layout_width="fill_parent"   
        android:layout_height="wrap_content"   
    />  
</LinearLayout>  
 第三步:修改主核心程序XmlDemo.java,代码如下:

public class WriteXML extends Activity implements OnClickListener{
	 private static final String BOOKS_PATH = "/sdcard/books2.xml";  
	    private Button mButton1,mButton2,mButton3;  
	    private TextView mTextView;  
	    @Override  
	    public void onCreate(Bundle savedInstanceState) {  
	        super.onCreate(savedInstanceState);  
	        setContentView(R.layout.main);  
	        setupViews();  
	    }  
	    //初始化工作  
	    private void setupViews(){  
	        mTextView = (TextView)findViewById(R.id.result);  
	        mButton1 = (Button)findViewById(R.id.btn1);  
	        mButton2 = (Button)findViewById(R.id.btn2);  
	        mButton3 = (Button)findViewById(R.id.btn3);  
	        mButton1.setOnClickListener(this);  
	        mButton2.setOnClickListener(this);  
	        mButton3.setOnClickListener(this);  
	    }  
	    //创建xml文件  
	    private void createXmlFile(){  
	        File linceseFile = new File(BOOKS_PATH);  
	        try{  
	            linceseFile.createNewFile();  
	        }catch (IOException e) {  
	            Log.e("IOException", "exception in createNewFile() method");  
	        }  
	        FileOutputStream fileos = null;  
	        try{  
	            fileos = new FileOutputStream(linceseFile);  
	        }catch (FileNotFoundException  e) {  
	            Log.e("FileNotFoundException", "can't create FileOutputStream");  
	        }  
	        XmlSerializer serializer = Xml.newSerializer();  
	        try {  
	            serializer.setOutput(fileos,"UTF-8");  
	            serializer.startDocument(null, true);  
	            serializer.startTag(null, "books");  
	            for(int i = 0; i < 3; i ++){  
	                serializer.startTag(null, "book");  
	                serializer.startTag(null, "bookname");  
	                serializer.text("Android教程" + i);  
	                serializer.endTag(null, "bookname");  
	                serializer.startTag(null, "bookauthor");  
	                serializer.text("Frankie" + i);  
	                serializer.endTag(null, "bookauthor");  
	                serializer.endTag(null, "book");  
	            }  
	          
	            serializer.endTag(null, "books");  
	            serializer.endDocument();  
	            serializer.flush();  
	            fileos.close();  
	        } catch (Exception e) {  
	            Log.e("Exception","error occurred while creating xml file");  
	        }  
	        Toast.makeText(getApplicationContext(), "创建xml文件成功!", Toast.LENGTH_SHORT).show();  
	    }  
	    //dom解析xml文件  
	    private void domParseXML(){  
	        File file = new File(BOOKS_PATH);  
	        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();        
	        DocumentBuilder db = null;    
	        try {  
	            db = dbf.newDocumentBuilder();  
	        } catch (ParserConfigurationException e) {  
	            e.printStackTrace();  
	        }  
	        Document doc = null;  
	        try {  
	            doc = db.parse(file);  
	        } catch (SAXException e) {  
	            e.printStackTrace();  
	        } catch (IOException e) {  
	            e.printStackTrace();  
	        }  
	        Element root = doc.getDocumentElement();  
	        NodeList books = root.getElementsByTagName("book");  
	        String res = "本结果是通过dom解析:" + "\n";  
	        for(int i = 0; i < books.getLength();i++){  
	            Element book = (Element)books.item(i);  
	            Element bookname = (Element)book.getElementsByTagName("bookname").item(0);  
	            Element bookauthor = (Element)book.getElementsByTagName("bookauthor").item(0);  
	            res += "书名: " + bookname.getFirstChild().getNodeValue() + " " +  
	                   "作者: " + bookauthor.getFirstChild().getNodeValue() + "\n";  
	        }  
	          
	        mTextView.setText(res);  
	    }  
	    
	    //xmlPullParser解析xml文件  
	    private void xmlPullParseXML(){  
	        String res = "本结果是通过XmlPullParse解析:" + "\n";  
	        try {             
	            XmlPullParserFactory factory = XmlPullParserFactory.newInstance();  
	            XmlPullParser xmlPullParser = factory.newPullParser();  
	              
	            xmlPullParser.setInput(Thread.currentThread().getContextClassLoader()  
	                    .getResourceAsStream(BOOKS_PATH), "UTF-8");  
	              
	            int eventType = xmlPullParser.getEventType();  
	              
	            try{  
	                while (eventType != XmlPullParser.END_DOCUMENT) {  
	                    String nodeName = xmlPullParser.getName();  
	                    switch (eventType) {  
	                    case XmlPullParser.START_TAG:  
	                        if("bookname".equals(nodeName)){      
	                            res += "书名: " + xmlPullParser.nextText() + " ";                   
	                        }else if("bookauthor".equals(nodeName)){  
	                            res += "作者: " + xmlPullParser.nextText() + "\n";  
	                        }  
	                        break;  
	                    default:  
	                        break;  
	                    }  
	                    eventType = xmlPullParser.next();  
	                }  
	            } catch (IOException e) {  
	                e.printStackTrace();  
	            }     
	        } catch (XmlPullParserException e) {  
	            e.printStackTrace();  
	        }  
	          
	        mTextView.setText(res);  
	    }  
	    //按钮事件响应  
	    public void onClick(View v) {  
	        if(v == mButton1){  
	            createXmlFile();  
	        }else if(v == mButton2){  
	            domParseXML();            
	        }else if(v == mButton3){  
	            xmlPullParseXML();  
	        }  
	    }         
}

 第四步:由于我们在Sd卡上新建了文件,需要增加权限,如下代码(第16行):

<?xml version="1.0" encoding="utf-8"?>  
<manifest xmlns:android="http://schemas.android.com/apk/res/android"  
      package="com.tutor.xml"  
      android:versionCode="1"  
      android:versionName="1.0">  
    <application android:icon="@drawable/icon" android:label="@string/app_name">  
        <activity android:name=".XmlDemo"  
                  android:label="@string/app_name">  
            <intent-filter>  
                <action android:name="android.intent.action.MAIN" />  
                <category android:name="android.intent.category.LAUNCHER" />  
            </intent-filter>  
        </activity>  
    </application>  
    <uses-sdk android:minSdkVersion="7" />  
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />   
</manifest>   

 注意:模拟器要建一个SD卡,否则出错。

books.xml内容如下:

<?xml version='1.0' encoding='UTF-8' standalone='yes' ?>  
<books>  
    <book>  
      <bookname>Android教程0</bookname>  
      <bookauthor>Frankie0</bookauthor>  
   </book>  
   <book>  
      <bookname>Android教程1</bookname>  
      <bookauthor>Frankie1</bookauthor>  
   </book>  
   <book>  
      <bookname>Android教程2</bookname>  
      <bookauthor>Frankie2</bookauthor>  
   </book>  
</books>  
 



 

 
  • 大小: 39.9 KB
  • 大小: 37.4 KB
分享到:
评论

相关推荐

    android中使用PULL解析XML

    本文将深入探讨如何在Android中使用PULL解析器(Pull Parser)来解析XML文档,这是一种轻量级且高效的解析方式。 **PULL解析器概述** PULL解析器(Pull Parsing)是一种事件驱动的解析模型,它不需要完整的XML文档...

    Android 解析xml文件

    Android提供了多种解析XML的方式,主要包括以下几种: 1. **DOM解析器**:Document Object Model(DOM)解析器将整个XML文件加载到内存中,形成一个树形结构,便于对整个文档进行遍历。但是,对于大型XML文件,DOM...

    android 三种方式解析XML(DOM,Pull,Sax) 带文件编码识别

    本篇文章将深入探讨三种在Android中解析XML的方法:DOM(文档对象模型)、Pull(拉取解析器)和SAX(简单API for XML),并且会特别强调如何识别文件编码。 首先,DOM解析是将整个XML文件加载到内存中形成一个树形...

    六,Android Xml解析

    这篇博文将深入探讨Android中的XML解析机制,包括DOM、SAX和Pull解析器三种主要方法。 首先,我们来看DOM解析。DOM(Document Object Model)是一种将XML文档加载到内存中并创建一个树形结构的方法。通过DOM解析,...

    Android中XML属性与解析

    ### Android中XML属性与解析深度解析 #### 一、引言 在Android开发中,XML文件扮演着至关重要的角色,特别是在界面布局设计方面。通过理解并掌握XML的基本属性及其解析方法,开发者能够更加高效地创建出美观且功能...

    android pull解析xml源码

    "Android pull解析xml源码"这个主题聚焦于使用Android的XML Pull解析器来理解和操作XML文档。Pull解析器是一种事件驱动的解析方法,与DOM(Document Object Model)和SAX(Simple API for XML)不同,它不需要将整个...

    【android开发】解析assets文件夹下XML资源文件

    总的来说,理解如何从assets文件夹读取和解析XML是Android开发中的一个重要技能。它能帮助开发者灵活地处理非标准资源,提高应用的可扩展性和灵活性。通过实践这个示例,开发者可以学习到如何在实际项目中应用Pull...

    android xml解析1

    在SAX接口中,事件源是org.xml.sax包中的XMLReader,它通过parser()方法来解析XML文档,并产生事件。事件处理器是org.xml.sax包中ContentHander、DTDHander、ErrorHandler,以及EntityResolver这4个接口....

    Android开发之XML文件解析的使用

    在Android中,使用SAX解析XML文件通常涉及以下几个步骤: 1. 创建SAX解析器工厂:首先,需要创建一个`SAXParserFactory`实例,这是通过调用`SAXParserFactory.newInstance()`方法实现的。这个工厂类用于生成`...

    android xml 各种解析 经典完整代码

    下面将详细介绍Android中XML解析的几种主要方法及其应用。 1. DOM解析器(Document Object Model) DOM解析器一次性加载整个XML文档到内存中,形成一个树形结构,可以方便地遍历和访问每个节点。这种方式适合小规模...

    Android应用源码之比较通用的xml解析方法.zip

    以下是对XML解析在Android中的应用及几种常见方法的详细说明: 1. DOM解析器(Document Object Model): DOM解析器将整个XML文档加载到内存中,形成一个树形结构,允许开发者通过节点遍历访问XML内容。虽然DOM解析...

    比较通用的xml解析方法_android源码.zip

    本资料“比较通用的xml解析方法”探讨了在Android中解析XML的几种常见方法。 1. DOM解析器: DOM(Document Object Model)是XML文档的树形结构表示。它一次性加载整个XML文档到内存中,形成一个完整的树形结构,...

    Android XML和JSON解析代码

    JSON解析在Android中通常有以下几种方式: 1. **Gson库**:Google提供的Gson库能将Java对象直接转换为JSON字符串,反之亦然。使用Gson非常方便,例如: ```java Gson gson = new Gson(); MyObject obj = new My...

    android中使用sax解析xml

    总结,SAX解析XML在Android中主要涉及以下几个步骤:创建`ContentHandler`子类,实现事件处理方法,创建`SAXParserFactory`和`SAXParser`,并调用`parse`方法解析XML文件。这种解析方式适用于处理大体积的XML文件,...

    android实例xml解析

    在Android中,有两种主要的XML解析方法:DOM(Document Object Model)解析和SAX(Simple API for XML)解析。 - DOM解析:DOM解析器将整个XML文档加载到内存中,创建一个树形结构,允许开发者通过节点遍历来访问...

    Android 三种(XML解析)

    在Android中,`org.w3c.dom`包提供了DOM解析的相关类,如`DocumentBuilderFactory`用于创建`DocumentBuilder`,进而解析XML文件。 2. SAX(Simple API for XML)解析: SAX是一种事件驱动的解析方法,不将整个XML...

    基于Android的XML解析技术的分析

    本文详细探讨了在Android平台上解析XML文件的几种主流技术:DOM(Document Object Model)、SAX(Simple API for XML)及XMLPull。通过对这些技术的具体实现过程进行阐述,并结合实际案例,对比分析了它们在处理不同...

    android mars视频代码 xml源码 XML解析

    在Android中,XML文件主要有以下几种类型: 1. **布局文件**:XML文件用于定义用户界面的布局,如`activity_main.xml`。它包含了各种视图组件(如TextView、ImageView、Button等)及其布局属性,如宽度、高度、对齐...

    android xml解析三种方式

    本文将深入探讨Android中解析XML的三种主要方法:DOM、SAX和PULL解析器。 1. DOM(Document Object Model)解析: DOM解析器将整个XML文档加载到内存中,创建一个树形结构,称为DOM树。每个XML元素、属性、文本等都...

Global site tag (gtag.js) - Google Analytics