当前位置:   article > 正文

Android 使用原始xml资源_android getresources().getxml

android getresources().getxml

原始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()方法来获取文本节点的值。


  1. <?xml version="1.0" encoding="utf-8"?>
  2. <books xmlns:android="http://schemas.android.com/apk/res/android">
  3. <book price="109.0" 出版日期="2008年">疯狂Java讲义</book>
  4. <book price="108.0" 出版日期="2009">轻量级Java EE</book>
  5. <book price="79.0" 出版日期="2009">Ajax 讲义</book>
  6. </books>

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. xmlns:app="http://schemas.android.com/apk/res-auto"
  4. xmlns:tools="http://schemas.android.com/tools"
  5. android:layout_width="match_parent"
  6. android:layout_height="match_parent"
  7. tools:context="shortcut.song.com.myapplication.XmlParserDemo">
  8. <Button
  9. android:id="@+id/start_xml_btn"
  10. android:layout_width="wrap_content"
  11. android:layout_height="wrap_content"
  12. android:text="Start-XML"
  13. />
  14. <TextView
  15. android:id="@+id/xml_text_show"
  16. android:layout_width="wrap_content"
  17. android:layout_height="wrap_content" />
  18. </LinearLayout>

  1. package shortcut.song.com.myapplication;
  2. import android.content.res.XmlResourceParser;
  3. import android.support.v7.app.AppCompatActivity;
  4. import android.os.Bundle;
  5. import android.view.View;
  6. import android.widget.Button;
  7. import android.widget.TextView;
  8. import org.xmlpull.v1.XmlPullParserException;
  9. import java.io.IOException;
  10. public class XmlParserDemo extends AppCompatActivity {
  11. @Override
  12. protected void onCreate(Bundle savedInstanceState) {
  13. super.onCreate(savedInstanceState);
  14. setContentView(R.layout.activity_xml_parser_demo);
  15. Button btn = (Button)findViewById(R.id.start_xml_btn);
  16. btn.setOnClickListener(new View.OnClickListener() {
  17. @Override
  18. public void onClick(View v) {
  19. XmlResourceParser xrp = getResources().getXml(R.xml.books);
  20. try{
  21. StringBuilder sb = new StringBuilder("");
  22. while (xrp.getEventType() != XmlResourceParser.END_DOCUMENT)
  23. {
  24. if ( xrp.getEventType() == XmlResourceParser.START_TAG )
  25. {
  26. String tagName = xrp.getName();
  27. if(tagName.equals("book")){
  28. String bookName = xrp.getAttributeValue(null, "price");
  29. sb.append("价格:");
  30. sb.append(bookName);
  31. String bookPrice = xrp.getAttributeName(1);
  32. sb.append(bookPrice);
  33. sb.append("书名");
  34. sb.append(xrp.nextText());
  35. }
  36. sb.append("\n");
  37. }
  38. xrp.next();
  39. }
  40. TextView tv = (TextView)findViewById(R.id.xml_text_show);
  41. tv.setText(sb.toString());
  42. }catch (XmlPullParserException e){
  43. e.printStackTrace();
  44. }catch (IOException e){
  45. e.printStackTrace();
  46. }
  47. }
  48. });
  49. }
  50. }





声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/314213
推荐阅读
相关标签
  

闽ICP备14008679号