实例
<cars>
<car price="22w" brand="大众">迈腾</car>
<car price="45w" brand="宝马">535li</car>
<car price="36w" brand="奥迪">A6</car>
</cars>
其他文件
activity_main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity"
android:orientation="vertical">
<Button android:id="@+id/but"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="开始解析"
android:layout_gravity="center_horizontal"/>
<TextView android:id="@+id/result"
android:layout_width="fill_parent"
android:layout_height="wrap_content"/>
</LinearLayout>
MainActivity.java
package com.example.resourcexml; import android.os.Bundle; import android.app.Activity; import android.content.res.XmlResourceParser; import android.text.style.SuperscriptSpan; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); final TextView result=(TextView) super.findViewById(R.id.result); Button but=(Button) super.findViewById(R.id.but); but.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { //根据xml资源的ID解析资源 //XmlResourceParser是XmlPullParser的子类 XmlResourceParser xrp=getResources().getXml(R.xml.car); try{ StringBuilder sb=new StringBuilder(""); /* * 文档刚被初始化,所以它应该位于文档的开始,事件应该是START_DOCUMENT, * 可以通过XmlPullParser.getEventType() */ //如果还没有到文档的结尾 while(xrp.getEventType()!=XmlResourceParser.END_DOCUMENT){ //如果遇到了开始标签 if(xrp.getEventType()==XmlResourceParser.START_TAG){ //获取该标签的标签名 String tagName=xrp.getName(); //如果遇到car标签 if(tagName.equals("car")){ //根据属性名来获取属性值 String carPrice=xrp.getAttributeValue(0); String carBrand=xrp.getAttributeValue(1); /* * 如果当前节点是START_TAG节点,而且下一个节点是TEXT节点,那么TEXT节点内容被返回。 * 或者如果下一个节点是END_TAG节点那就返回空String,否则抛出异常 */ String carModel=xrp.nextText(); sb.append("价格:"+carPrice); sb.append("品牌:"+carBrand); sb.append("型号:"+carModel); } sb.append("\n"); } //获取解析器的下一个事件 xrp.next(); } result.setText(sb); } catch(Exception e){ e.printStackTrace(); } } }); } }
原文链接:https://www.f2er.com/xml/299152.html