xml的创建与解析

前端之家收集整理的这篇文章主要介绍了xml的创建与解析前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

写一个很简单的例子记录一下XML的创建与解析。

创建与解析其实是两个互逆的过程,会了其中一个对应的就能写出来。

创建用XmlSerializerxmlSerializer=Xml.newSerializer();

解析用XmlPullParser xmlPullParser=Xml.newPullParser();

  1. package com.example.xmlborn;
  2.  
  3. import java.io.IOException;
  4. import java.io.StringReader;
  5. import java.io.StringWriter;
  6. import java.util.ArrayList;
  7.  
  8. import org.xmlpull.v1.XmlPullParser;
  9. import org.xmlpull.v1.XmlPullParserException;
  10. import org.xmlpull.v1.XmlSerializer;
  11.  
  12. import android.R.xml;
  13. import android.os.Bundle;
  14. import android.app.Activity;
  15. import android.util.Xml;
  16. import android.view.Menu;
  17. import android.view.View;
  18. import android.view.View.OnClickListener;
  19. import android.widget.Button;
  20. import android.widget.TextView;
  21. import android.widget.Toast;
  22.  
  23. public class MainActivity extends Activity implements OnClickListener{
  24. Button xmlpullButton;
  25. private String result;
  26. private TextView textView;
  27. @Override
  28. protected void onCreate(Bundle savedInstanceState) {
  29. super.onCreate(savedInstanceState);
  30. setContentView(R.layout.activity_main);
  31. String resource=produceXML();
  32. textView=(TextView) findViewById(R.id.text);
  33. xmlpullButton=(Button) findViewById(R.id.button1);
  34. xmlpullButton.setOnClickListener(this);
  35. }
  36. @Override
  37. public void onClick(View v) {
  38. // TODO Auto-generated method stub
  39. switch (v.getId()) {
  40. case R.id.button1:
  41. result=parseXML();
  42. if (result!=null) {
  43. textView.setText(result);
  44. }else {
  45. Toast.makeText(getApplicationContext(),"null",1000).show();
  46. }
  47. break;
  48.  
  49. default:
  50. break;
  51. }
  52. }
  53. private String produceXML() {
  54. // TODO Auto-generated method stub
  55. StringWriter writer=new StringWriter();
  56. XmlSerializer xmlSerializer=Xml.newSerializer();
  57. ArrayList<Beauty> list=getData();
  58. try {
  59. xmlSerializer.setOutput(writer);
  60. xmlSerializer.startDocument("UTF-8",true);
  61. xmlSerializer.startTag(null,"beauties");
  62. for (Beauty beauty:list) {
  63. xmlSerializer.startTag(null,"beautyname");
  64. xmlSerializer.text(beauty.getNameString());
  65. xmlSerializer.endTag(null,"beautyname");
  66. xmlSerializer.startTag(null,"age");
  67. xmlSerializer.text(beauty.getAge());
  68. xmlSerializer.endTag(null,"age");
  69. }
  70. xmlSerializer.endTag(null,"beauties");
  71. xmlSerializer.endDocument();
  72. } catch (IllegalArgumentException e) {
  73. // TODO Auto-generated catch block
  74. e.printStackTrace();
  75. } catch (IllegalStateException e) {
  76. // TODO Auto-generated catch block
  77. e.printStackTrace();
  78. } catch (IOException e) {
  79. // TODO Auto-generated catch block
  80. e.printStackTrace();
  81. }
  82. return writer.toString();
  83. }
  84.  
  85. private ArrayList<Beauty> getData() {
  86. // TODO Auto-generated method stub
  87. ArrayList<Beauty> list=new ArrayList<Beauty>();
  88. Beauty lily=new Beauty("lily","23");
  89. Beauty lucy=new Beauty("lucy","36");
  90. list.add(lily);
  91. list.add(lucy);
  92. return list;
  93. }
  94.  
  95. private String parseXML() {
  96. result="通过pull解析结果为:";
  97. String xmlString=produceXML();
  98. StringReader in=new StringReader(xmlString);
  99. XmlPullParser xmlPullParser=Xml.newPullParser();
  100. try {
  101. xmlPullParser.setInput(in);
  102. int type=xmlPullParser.getEventType();
  103. while (type!=XmlPullParser.END_DOCUMENT) {
  104. String nodeName=xmlPullParser.getName();
  105. switch (type) {
  106. case XmlPullParser.START_TAG:
  107. if("beautyname".equals(nodeName)){
  108. result +="姓名:"+xmlPullParser.nextText();
  109. }if ("age".equals(nodeName)) {
  110. result +="年龄:"+xmlPullParser.nextText();
  111. }
  112. break;
  113.  
  114. }
  115. type=xmlPullParser.next();
  116. }
  117. } catch (XmlPullParserException e) {
  118. // TODO Auto-generated catch block
  119. e.printStackTrace();
  120. } catch (IOException e) {
  121. // TODO Auto-generated catch block
  122. e.printStackTrace();
  123. }
  124. return result;
  125. // TODO Auto-generated method stub
  126. }
  127. class Beauty{
  128. String nameString,age;
  129. public String getNameString() {
  130. return nameString;
  131. }
  132.  
  133. public void setNameString(String nameString) {
  134. this.nameString = nameString;
  135. }
  136.  
  137. public String getAge() {
  138. return age;
  139. }
  140.  
  141. public void setAge(String age) {
  142. this.age = age;
  143. }
  144.  
  145. public Beauty(String nameString,String age) {
  146. super();
  147. this.nameString = nameString;
  148. this.age = age;
  149. }
  150. }
  151. }

代码链接点击打开链接

猜你在找的XML相关文章