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所示的界面。

  • 相关阅读:
    [luogu p1164] 小A点菜
    [luogu p5018] 对称二叉树
    [luogu p1305] 新二叉树
    [luogu p1030] 求先序排列
    [luogu p1087] FBI树
    [luogu p1449] 后缀表达式
    [luogu p1160] 队列安排
    [luogu p1057] 传球游戏
    有趣的问题系列-主元素问题
    [luogu p1192] 台阶问题
  • 原文地址:https://www.cnblogs.com/wolipengbo/p/3439411.html
Copyright © 2011-2022 走看看