几种解析的方式

  1. <?xml version="1.0" encoding="utf-8"?>  

  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  

  3.     android:orientation="vertical"  

  4.     android:layout_width="fill_parent"  

  5.     android:layout_height="fill_parent"  

  6.     >  

  7.     <Button  

  8.         android:id="@+id/btn1"  

  9.         android:layout_width="fill_parent"   

  10.         android:layout_height="wrap_content"   

  11.         android:text="创建XML文件"  

  12.     />  

  13.     <Button  

  14.         android:id="@+id/btn2"  

  15.         android:layout_width="fill_parent"   

  16.         android:layout_height="wrap_content"   

  17.         android:text="DOM解析XML"  

  18.     />  

  19.     <Button  

  20.         android:id="@+id/btn3"  

  21.         android:layout_width="fill_parent"   

  22.         android:layout_height="wrap_content"   

  23.         android:text="XmlPullParse解析XML"  

  24.     />  

  25.     <TextView  

  26.         android:id="@+id/result"  

  27.         android:layout_width="fill_parent"   

  28.         android:layout_height="wrap_content"   

  29.     />  

  30. </LinearLayout>  

  • public class XmlDemo extends Activity implements OnClickListener {  

  •      

  •     private static final String BOOKS_PATH = "/sdcard/books.xml";  

  •     private Button mButton1,mButton2,mButton3;  

  •     private TextView mTextView;  

  •     @Override  

  •     public void onCreate(Bundle savedInstanceState) {  

  •         super.onCreate(savedInstanceState);  

  •         setContentView(R.layout.main);  

  •         setupViews();  

  •     }  

  •     //初始化工作  

  •     private void setupViews(){  

  •         mTextView = (TextView)findViewById(R.id.result);  

  •         mButton1 = (Button)findViewById(R.id.btn1);  

  •         mButton2 = (Button)findViewById(R.id.btn2);  

  •         mButton3 = (Button)findViewById(R.id.btn3);  

  •         mButton1.setOnClickListener(this);  

  •         mButton2.setOnClickListener(this);  

  •         mButton3.setOnClickListener(this);  

  •     }  

  •     //创建xml文件  

  •     private void createXmlFile(){  

  •         File linceseFile = new File(BOOKS_PATH);  

  •         try{  

  •             linceseFile.createNewFile();  

  •         }catch (IOException e) {  

  •             Log.e("IOException", "exception in createNewFile() method");  

  •         }  

  •         FileOutputStream fileos = null;  

  •         try{  

  •             fileos = new FileOutputStream(linceseFile);  

  •         }catch (FileNotFoundException  e) {  

  •             Log.e("FileNotFoundException", "can't create FileOutputStream");  

  •         }  

  •         XmlSerializer serializer = Xml.newSerializer();  

  •         try {  

  •             serializer.setOutput(fileos,"UTF-8");  

  •             serializer.startDocument(null, true);  

  •             serializer.startTag(null, "books");  

  •             for(int i = 0; i < 3; i ++){  

  •                 serializer.startTag(null, "book");  

  •                 serializer.startTag(null, "bookname");  

  •                 serializer.text("Android教程" + i);  

  •                 serializer.endTag(null, "bookname");  

  •                 serializer.startTag(null, "bookauthor");  

  •                 serializer.text("Frankie" + i);  

  •                 serializer.endTag(null, "bookauthor");  

  •                 serializer.endTag(null, "book");  

  •             }  

  •           

  •             serializer.endTag(null, "books");  

  •             serializer.endDocument();  

  •             serializer.flush();  

  •             fileos.close();  

  •         } catch (Exception e) {  

  •             Log.e("Exception","error occurred while creating xml file");  

  •         }  

  •         Toast.makeText(getApplicationContext(), "创建xml文件成功!", Toast.LENGTH_SHORT).show();  

  •     }  

  •     //dom解析xml文件  

  •     private void domParseXML(){  

  •         File file = new File(BOOKS_PATH);  

  •         DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();        

  •         DocumentBuilder db = null;    

  •         try {  

  •             db = dbf.newDocumentBuilder();  

  •         } catch (ParserConfigurationException e) {  

  •             e.printStackTrace();  

  •         }  

  •         Document doc = null;  

  •         try {  

  •             doc = db.parse(file);  

  •         } catch (SAXException e) {  

  •             e.printStackTrace();  

  •         } catch (IOException e) {  

  •             e.printStackTrace();  

  •         }  

  •         Element root = doc.getDocumentElement();  

  •         NodeList books = root.getElementsByTagName("book");  

  •         String res = "本结果是通过dom解析:" + "/n";  

  •         for(int i = 0; i < books.getLength();i++){  

  •             Element book = (Element)books.item(i);  

  •             Element bookname = (Element)book.getElementsByTagName("bookname").item(0);  

  •             Element bookauthor = (Element)book.getElementsByTagName("bookauthor").item(0);  

  •             res += "书名: " + bookname.getFirstChild().getNodeValue() + " " +  

  •                    "作者: " + bookauthor.getFirstChild().getNodeValue() + "/n";  

  •         }  

  •           

  •         mTextView.setText(res);  

  •     }  

  •     

  •     //xmlPullParser解析xml文件  

  •     private void xmlPullParseXML(){  

  •         String res = "本结果是通过XmlPullParse解析:" + "/n";  

  •         try {             

  •             XmlPullParserFactory factory = XmlPullParserFactory.newInstance();  

  •             XmlPullParser xmlPullParser = factory.newPullParser();  

  •               

  •             xmlPullParser.setInput(Thread.currentThread().getContextClassLoader()  

  •                     .getResourceAsStream(BOOKS_PATH), "UTF-8");  

  •               

  •             int eventType = xmlPullParser.getEventType();  

  •               

  •             try{  

  •                 while (eventType != XmlPullParser.END_DOCUMENT) {  

  •                     String nodeName = xmlPullParser.getName();  

  •                     switch (eventType) {  

  •                     case XmlPullParser.START_TAG:  

  •                         if("bookname".equals(nodeName)){      

  •                             res += "书名: " + xmlPullParser.nextText() + " ";                   

  •                         }else if("bookauthor".equals(nodeName)){  

  •                             res += "作者: " + xmlPullParser.nextText() + "/n";  

  •                         }  

  •                         break;  

  •                     default:  

  •                         break;  

  •                     }  

  •                     eventType = xmlPullParser.next();  

  •                 }  

  •             } catch (IOException e) {  

  •                 e.printStackTrace();  

  •             }     

  •         } catch (XmlPullParserException e) {  

  •             e.printStackTrace();  

  •         }  

  •           

  •         mTextView.setText(res);  

  •     }  

  •     //按钮事件响应  

  •     public void onClick(View v) {  

  •         if(v == mButton1){  

  •             createXmlFile();  

  •         }else if(v == mButton2){  

  •             domParseXML();            

  •         }else if(v == mButton3){  

  •             xmlPullParseXML();  

  •         }  

  •     }         

  • }  

点击创建XML文件按钮,生成books.xml文件

books.xml内容如下:

[java] view plain copy

  1. <?xml version='1.0' encoding='UTF-8' standalone='yes' ?>  
  2. <books>  
  3.     <book>  
  4.       <bookname>Android教程0</bookname>  
  5.       <bookauthor>Frankie0</bookauthor>  
  6.    </book>  
  7.    <book>  
  8.       <bookname>Android教程1</bookname>  
  9.       <bookauthor>Frankie1</bookauthor>  
  10.    </book>  
  11.    <book>  
  12.       <bookname>Android教程2</bookname>  
  13.       <bookauthor>Frankie2</bookauthor>  
  14.    </book>  
  15. </books>  

//sd权限

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 

 

 

 

猜你喜欢

转载自blog.csdn.net/zzf0521/article/details/81705017