zoukankan      html  css  js  c++  java
  • xml文件解析和序列化


    转载:http://blog.csdn.net/liuhe688/article/details/6415593
    1.  XmlPullParser parser = Xml.newPullParser(); //由android.util.Xml创建一个XmlPullParser实例  
    2.         parser.setInput(is, "UTF-8");               //设置输入流 并指明编码方式  
    3.   
    4.         int eventType = parser.getEventType();  
    5.         while (eventType != XmlPullParser.END_DOCUMENT) {  
    6.             switch (eventType) {  
    7.             case XmlPullParser.START_DOCUMENT:  
    8.                 books = new ArrayList<Book>();  
    9.                 break;  
    10.             case XmlPullParser.START_TAG:  
    11.                 if (parser.getName().equals("book")) {  
    12.                     book = new Book();  
    13.                 } else if (parser.getName().equals("id")) {  
    14.                     eventType = parser.next();  
    15.                     book.setId(Integer.parseInt(parser.getText()));  
    16.                 } else if (parser.getName().equals("name")) {  
    17.                     eventType = parser.next();                //parser.getAttributeName(0) 当前标签内第0个属性的名称   parser.getAttributeValue(0)  当前标签内第0个属性对应的值
    18.                                                                 //parser.getAttributeValue("","name"); 得到当前标签内名称为name的值,默认为“”
    19.                     book.setName(parser.getText());  
    20.                 } else if (parser.getName().equals("price")) {  
    21.                     eventType = parser.next();  
    22.                     book.setPrice(Float.parseFloat(parser.getText()));  
    23.                 }  
    24.                 break;  
    25.             case XmlPullParser.END_TAG:  
    26.                 if (parser.getName().equals("book")) {  
    27.                     books.add(book);  
    28.                     book = null;      
    29.                 }  
    30.                 break;  
    31.             }  
    32.             eventType = parser.next();  
    33.         }  
    34.         return books;  
    35.     }  
    36.       
    37.     @Override  
    38.     public String serialize(List<Book> books) throws Exception {  
    39. //      XmlPullParserFactory factory = XmlPullParserFactory.newInstance();  
    40. //      XmlSerializer serializer = factory.newSerializer();  
    41.           
    42.         XmlSerializer serializer = Xml.newSerializer(); //由android.util.Xml创建一个XmlSerializer实例  
    43.         StringWriter writer = new StringWriter();  
    44.         serializer.setOutput(writer);   //设置输出方向为writer  
    45.         serializer.startDocument("UTF-8"true);  
    46.         serializer.startTag("""books");  
    47.         for (Book book : books) {  
    48.             serializer.startTag("""book");  
    49.             serializer.attribute("""id", book.getId() + "");  
    50.               
    51.             serializer.startTag("""name");  
    52.             serializer.text(book.getName());  
    53.             serializer.endTag("""name");  
    54.               
    55.             serializer.startTag("""price");  
    56.             serializer.text(book.getPrice() + "");  
    57.             serializer.endTag("""price");  
    58.               
    59.             serializer.endTag("""book");  
    60.         }  
    61.         serializer.endTag("""books");  
    62.         serializer.endDocument();  
    63.           
    64.         return writer.toString();  
    65.     }  
    66. }  
  • 相关阅读:
    NPIV介绍
    PowerShell随笔2_分支 选择 循环 特殊变量
    socket编程原理
    Linux查看物理CPU个数、核数、逻辑CPU个数
    Markdown 使用指南
    Linux Socket
    YoutubeAPI使用
    Youtube API数据类型
    Linux wpa_cli 调试方法
    linux网络编程
  • 原文地址:https://www.cnblogs.com/fengchuxiaodai/p/5560323.html
Copyright © 2011-2022 走看看