博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
xml的创建与解析
阅读量:4879 次
发布时间:2019-06-11

本文共 3865 字,大约阅读时间需要 12 分钟。

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

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

创建用XmlSerializer xmlSerializer=Xml.newSerializer();

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

 

[java] 
 
  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.               
  48.             break;  
  49.   
  50.         default:  
  51.             break;  
  52.         }  
  53.     }  
  54.     private String produceXML() {  
  55.         // TODO Auto-generated method stub  
  56.         StringWriter writer=new StringWriter();  
  57.         XmlSerializer xmlSerializer=Xml.newSerializer();  
  58.         ArrayList<Beauty> list=getData();  
  59.         try {  
  60.             xmlSerializer.setOutput(writer);  
  61.             xmlSerializer.startDocument("UTF-8",true);  
  62.             xmlSerializer.startTag(null,"beauties");  
  63.             for (Beauty beauty:list) {  
  64.               
  65.                 xmlSerializer.startTag(null,"beautyname");  
  66.                 xmlSerializer.text(beauty.getNameString());  
  67.                 xmlSerializer.endTag(null,"beautyname");  
  68.                 xmlSerializer.startTag(null,"age");  
  69.                 xmlSerializer.text(beauty.getAge());  
  70.                 xmlSerializer.endTag(null,"age");  
  71.                   
  72.             }  
  73.             xmlSerializer.endTag(null,"beauties");  
  74.             xmlSerializer.endDocument();  
  75.               
  76.         } catch (IllegalArgumentException e) {  
  77.             // TODO Auto-generated catch block  
  78.             e.printStackTrace();  
  79.         } catch (IllegalStateException e) {  
  80.             // TODO Auto-generated catch block  
  81.             e.printStackTrace();  
  82.         } catch (IOException e) {  
  83.             // TODO Auto-generated catch block  
  84.             e.printStackTrace();  
  85.         }  
  86.         return writer.toString();  
  87.     }  
  88.   
  89.     private ArrayList<Beauty> getData() {  
  90.         // TODO Auto-generated method stub  
  91.         ArrayList<Beauty> list=new ArrayList<Beauty>();  
  92.         Beauty lily=new Beauty("lily","23");  
  93.         Beauty lucy=new Beauty("lucy","36");  
  94.         list.add(lily);  
  95.         list.add(lucy);  
  96.         return list;  
  97.     }  
  98.       
  99.       
  100.   
  101.     private String parseXML() {  
  102.         result="通过pull解析结果为:";  
  103.         String xmlString=produceXML();  
  104.         StringReader in=new StringReader(xmlString);  
  105.     XmlPullParser xmlPullParser=Xml.newPullParser();  
  106.     try {  
  107.         xmlPullParser.setInput(in);  
  108.         int type=xmlPullParser.getEventType();  
  109.         while (type!=XmlPullParser.END_DOCUMENT) {  
  110.         String nodeName=xmlPullParser.getName();  
  111.         switch (type) {  
  112.         case XmlPullParser.START_TAG:  
  113.             if("beautyname".equals(nodeName)){  
  114.                 result +="姓名:"+xmlPullParser.nextText();  
  115.             }if ("age".equals(nodeName)) {  
  116.                 result +="年龄:"+xmlPullParser.nextText();  
  117.             }  
  118.             break;  
  119.   
  120.           
  121.         }  
  122.         type=xmlPullParser.next();  
  123.         }  
  124.     } catch (XmlPullParserException e) {  
  125.         // TODO Auto-generated catch block  
  126.         e.printStackTrace();  
  127.     } catch (IOException e) {  
  128.         // TODO Auto-generated catch block  
  129.         e.printStackTrace();  
  130.     }  
  131.         return result;  
  132.         // TODO Auto-generated method stub  
  133.           
  134.     }  
  135.       
  136. class Beauty{  
  137.           
  138.         String nameString,age;  
  139.           
  140.         public String getNameString() {  
  141.             return nameString;  
  142.         }  
  143.   
  144.         public void setNameString(String nameString) {  
  145.             this.nameString = nameString;  
  146.         }  
  147.   
  148.         public String getAge() {  
  149.             return age;  
  150.         }  
  151.   
  152.         public void setAge(String age) {  
  153.             this.age = age;  
  154.         }  
  155.   
  156.         public Beauty(String nameString, String age) {  
  157.             super();  
  158.             this.nameString = nameString;  
  159.             this.age = age;  
  160.         }  
  161.           
  162.     }  
  163. }  
  164. 代码地址:

转载于:https://www.cnblogs.com/lily0813/archive/2013/06/06/3122687.html

你可能感兴趣的文章
自动化测试用例getText()获取某一个元素的值返回null或空
查看>>
大数智能未来
查看>>
virtualenv和virtualenvwrapper 的安装和使用
查看>>
MAC sublime text 无法自动补齐标签
查看>>
NgBook留言本开发全过程(1)
查看>>
LeetCode-指针法
查看>>
Python之路,Day12 - 那就做个堡垒机吧
查看>>
linux之shell之if、while、for语句介绍
查看>>
Mysql phpStudy升级Mysql版本,流产了怎么办?
查看>>
SQLServer之数据库行锁
查看>>
OFDM仿真
查看>>
浅谈linux内核中内存分配函数
查看>>
走近SpringBoot
查看>>
写在读研初期
查看>>
开环增益对负反馈放大电路的影响
查看>>
MySQL-ERROR 2003
查看>>
SQL Server2012-SSIS的包管理和部署
查看>>
JavaScript内置对象
查看>>
如何把js的循环写成异步的
查看>>
ER图是啥?
查看>>