zoukankan      html  css  js  c++  java
  • 使用原始XML资源——使用原始XML文件

         下面为示例程序添加一个原始的XML文件,将该XML文件放到/res/xml目录下,该XML文件的内容很简单。XML资源的内容如下。

         程序清单:   esxmlooks.xml文件

    <?xml version="1.0" encoding="UTF-8"?>
    <books>
        <book price="99.0" 出版日期="2008年">疯狂Java讲义</book>
        <book price="89.0" 出版日期="2009年">轻量级Java EE企业应用实践</book>
        <book price="69.0" 出版日期="2009年">疯狂Ajax讲义</book>
    </books>

    接下来就可以在Java程序中获取该XML资源,并解析该XML资源中的信息。

    界面布局文件如下:

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        >
    <Button android:id="@+id/bn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="解析XML资源"/>
       <EditText android:id="@+id/show"
           android:layout_width="fill_parent"
           android:layout_height="wrap_content"
           android:editable="false"
           android:cursorVisible="false"/>
    
    </LinearLayout>

    后台Java文件如下:

    package com.example.studyresources;
    
    import java.io.IOException;
    
    import org.xmlpull.v1.XmlPullParserException;
    
    import android.os.Bundle;
    import android.app.Activity;
    import android.content.res.XmlResourceParser;
    import android.view.Menu;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    import android.widget.EditText;
    
    public class XmlResTest extends Activity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_xml_res_test);
            //获取bn按钮,并为该按钮绑定事件监听器
            Button bn=(Button)findViewById(R.id.bn);
            bn.setOnClickListener(new OnClickListener(){
    
                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub
                    //根据XML资源的ID获取解析该资源的解析器
                    //XmlResourceParser 是 XmlPullParse的子类
                    XmlResourceParser xrp=getResources().getXml(R.xml.books);
                    try
                    {
                        StringBuilder sb=new StringBuilder("");
                        //还没有到XML文档的结尾处
                        while(xrp.getEventType()!=XmlResourceParser.END_DOCUMENT)
                        {
                            //如果遇到了开始标签
                            if(xrp.getEventType()==XmlResourceParser.START_TAG)
                            {
                                //获取该标签的标签名
                                String tagName=xrp.getName();
                                //如果遇到book标签
                                if(tagName.equals("book"))
                                {
                                    //根据属性名来获取属性值
                                    String bookName=xrp.getAttributeValue(null, "price");
                                    sb.append("价格:");
                                    sb.append(bookName);
                                    //根据属性索引来获取属性值
                                    String bookPrice=xrp.getAttributeValue(1);
                                    sb.append("   出版日期:");
                                    sb.append(bookPrice);
                                    sb.append("   书名:");
                                    //获取文本节点的值
                                    sb.append(xrp.nextText());
                                }
                                sb.append("
    ");
                            }
                            //获取解析器的下一个事件
                            xrp.next();//
                        }
                        EditText show=(EditText)findViewById(R.id.show);
                        show.setText(sb.toString());
                    }
                    catch(XmlPullParserException e)
                    {
                        e.printStackTrace();
                    }
                    catch(IOException e)
                    {
                        e.printStackTrace();
                    }
                }});
        }
    
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            // Inflate the menu; this adds items to the action bar if it is present.
            getMenuInflater().inflate(R.menu.xml_res_test, menu);
            return true;
        }
    
    }

    上面程序中①号粗体字代码用于不断获取Pull解析的解析事件,程序中第一行粗体字只要解析事件不等于XmlResourceParser.END_DOCUMNET(也就是还没有解析结束),程序将一直解析下去,通过这种方式即可把整份XML文档的内容解析出来。

        上面的程序中包含了一个按钮和一个文本框,当用户单击该按钮时,程序将会解析指定XML文档,并把文档中的内容显示出来。运行该程序,然后单击“解析XML资源”按钮,程序显示如图6.9所示的界面。

  • 相关阅读:
    ASP.NET 表单验证 Part.1(理解表单验证)
    Silverlight 简介 Part.3(设计 Siverlight 页面)
    ASP.NET 成员资格 Part.3(LoginStatus、LoginView、PasswordRecovery)
    ASP.NET 网站部署 Part.1(安装IIS、复制文件部署网站)
    ASP.NET Dynamic Data Part.1(创建动态数据应用程序)
    ASP.NET 安全模型 Part.2(SSL)
    ASP.NET MVC Part.2(扩展基本的 MVC 应用程序)
    ASP.NET 网站部署 Part.2(使用 Web 部署)
    开发高级 Web 部件
    创建 Web 部件(WebPart 类、简单的 Web 部件)
  • 原文地址:https://www.cnblogs.com/wolipengbo/p/3439411.html
Copyright © 2011-2022 走看看