Android 使用原始xml资源
2017-06-12 18:03
423 查看
原始XML资源一般保存在/res/xml/路径下。
XML文件中访问语法格式:
@[<package_name>:]xml/file_name
Java代码中访问语法格式:
[<package_name>.]R.xml.<file_name>
在JAVA程序中获取实际的XML文档,可以通过Resources的如下两个方法来实现:
XmlResourceParser getXml(int id):获取XML文档,并使用一个XmlPullParser来解析该XML文档,该方法返回一个解析器对象(XmlResourceParser是XmlPullParser的子类。
InputStream openRawResource(int id):获取XML文档对应的输入流。
大部分时候,我们可以直接调用getXml(int id)方法来获取XML文档,并对该文档进行解析,Android默认使用内置的Pull解析器来解析XML文件。
除了使用Pull解析之外,Java开发者还可以使用DOM 或 SAX 对XML文档进行解析。Pull解析方式类似SAX解析,它们都采用事件驱动的方式来进行解析。当Pull解析器开始解析之后,开发者可以不断地调用Pull解析器的next()方法获取下一个解析事件(开始文档、结束文档、开始标签、结束标签等),当处于某个元素处时,可调用XmlPullParser的
getAttributeValue()方法来获取该元素的属性值,也可以调用XmlPullParser的nextText()方法来获取文本节点的值。
XML文件中访问语法格式:
@[<package_name>:]xml/file_name
Java代码中访问语法格式:
[<package_name>.]R.xml.<file_name>
在JAVA程序中获取实际的XML文档,可以通过Resources的如下两个方法来实现:
XmlResourceParser getXml(int id):获取XML文档,并使用一个XmlPullParser来解析该XML文档,该方法返回一个解析器对象(XmlResourceParser是XmlPullParser的子类。
InputStream openRawResource(int id):获取XML文档对应的输入流。
大部分时候,我们可以直接调用getXml(int id)方法来获取XML文档,并对该文档进行解析,Android默认使用内置的Pull解析器来解析XML文件。
除了使用Pull解析之外,Java开发者还可以使用DOM 或 SAX 对XML文档进行解析。Pull解析方式类似SAX解析,它们都采用事件驱动的方式来进行解析。当Pull解析器开始解析之后,开发者可以不断地调用Pull解析器的next()方法获取下一个解析事件(开始文档、结束文档、开始标签、结束标签等),当处于某个元素处时,可调用XmlPullParser的
getAttributeValue()方法来获取该元素的属性值,也可以调用XmlPullParser的nextText()方法来获取文本节点的值。
<?xml version="1.0" encoding="utf-8"?> <books xmlns:android="http://schemas.android.com/apk/res/android"> <book price="109.0" 出版日期="2008年">疯狂Java讲义</book> <book price="108.0" 出版日期="2009">轻量级Java EE</book> <book price="79.0" 出版日期="2009">Ajax 讲义</book> </books>
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="shortcut.song.com.myapplication.XmlParserDemo"> <Button android:id="@+id/start_xml_btn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Start-XML" /> <TextView android:id="@+id/xml_text_show" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout>
package shortcut.song.com.myapplication; import android.content.res.XmlResourceParser; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.TextView; import org.xmlpull.v1.XmlPullParserException; import java.io.IOException; public class XmlParserDemo extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_xml_parser_demo); Button btn = (Button)findViewById(R.id.start_xml_btn); btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { XmlResourceParser xrp = getResources().getXml(R.xml.books); try{ StringBuilder sb = new StringBuilder(""); while (xrp.getEventType() != XmlResourceParser.END_DOCUMENT) { if ( xrp.getEventType() == XmlResourceParser.START_TAG ) { String tagName = xrp.getName(); if(tagName.equals("book")){ String bookName = xrp.getAttributeValue(null, "price"); sb.append("价格:"); sb.append(bookName); String bookPrice = xrp.getAttributeName(1); sb.append(bookPrice); sb.append("书名"); sb.append(xrp.nextText()); } sb.append("\n"); } xrp.next(); } TextView tv = (TextView)findViewById(R.id.xml_text_show); tv.setText(sb.toString()); }catch (XmlPullParserException e){ e.printStackTrace(); }catch (IOException e){ e.printStackTrace(); } } }); } }
相关文章推荐
- Android 使用原始XML资源
- Android中使用Xml内置解析器pull来解析Xml原始资源
- Android读取资源文件——读取原始Xml内容和使用Menu文件
- Android开发进阶(五)--使用原始的XML文件
- Android 使用原始资源
- Android中原始资源文件使用详解
- android之使用原始资源
- android XML File配置资源文件使用详解、属性功能详解之Drawable
- Android中原始资源文件使用详解
- Android strings.xml资源文件 使用技巧
- android中的原始资源的使用
- Android 原始资源文件的使用详解
- android 之使用任意XML资源文件
- 样式、主题、原始XML资源、Android程序国际化、Menu资源
- Android实战技巧:使用原始资源文件
- Android控件系列之XML静态资源使用介绍
- Android原始资源的使用
- Android中原始资源的使用
- Android 将Activity打成jar包 供第三方使用 彻底解决XML 图片 文字资源不可打入到jar包的问题!
- Android 资源的使用之XML资源