xml文件解析和序列化

Posted 凤雏小呆

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了xml文件解析和序列化相关的知识,希望对你有一定的参考价值。


XmlPullParser parser = Xml.newPullParser(); //创建一个XmlPullParser实例 parser.setInput(is, "UTF-8"); //设置输入流 并指明编码方式 int eventType = parser.getEventType(); while (eventType != XmlPullParser.END_DOCUMENT) { switch (eventType) { case XmlPullParser.START_DOCUMENT: books = new ArrayList<Book>(); break; case XmlPullParser.START_TAG: if (parser.getName().equals("book")) { book = new Book(); } else if (parser.getName().equals("id")) { eventType = parser.next(); book.setId(Integer.parseInt(parser.getText())); } else if (parser.getName().equals("name")) { eventType = parser.next(); book.setName(parser.getText()); } else if (parser.getName().equals("price")) { eventType = parser.next(); book.setPrice(Float.parseFloat(parser.getText())); } break; case XmlPullParser.END_TAG: if (parser.getName().equals("book")) { books.add(book); book = null; } break; } eventType = parser.next(); } return books; } @Override public String serialize(List<Book> books) throws Exception { // XmlPullParserFactory factory = XmlPullParserFactory.newInstance(); // XmlSerializer serializer = factory.newSerializer(); XmlSerializer serializer = Xml.newSerializer(); //创建一个XmlSerializer实例 StringWriter writer = new StringWriter(); serializer.setOutput(writer); //设置输出方向为writer serializer.startDocument("UTF-8", true); serializer.startTag("", "books"); for (Book book : books) { serializer.startTag("", "book"); serializer.attribute("", "id", book.getId() + ""); serializer.startTag("", "name"); serializer.text(book.getName()); serializer.endTag("", "name"); serializer.startTag("", "price"); serializer.text(book.getPrice() + ""); serializer.endTag("", "price"); serializer.endTag("", "book"); } serializer.endTag("", "books"); serializer.endDocument(); return writer.toString(); } }

  转载: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();  
  18.                     book.setName(parser.getText());  
  19.                 } else if (parser.getName().equals("price")) {  
  20.                     eventType = parser.next();  
  21.                     book.setPrice(Float.parseFloat(parser.getText()));  
  22.                 }  
  23.                 break;  
  24.             case XmlPullParser.END_TAG:  
  25.                 if (parser.getName().equals("book")) {  
  26.                     books.add(book);  
  27.                     book = null;      
  28.                 }  
  29.                 break;  
  30.             }  
  31.             eventType = parser.next();  
  32.         }  
  33.         return books;  
  34.     }  
  35.       
  36.     @Override  
  37.     public String serialize(List<Book> books) throws Exception {  
  38. //      XmlPullParserFactory factory = XmlPullParserFactory.newInstance();  
  39. //      XmlSerializer serializer = factory.newSerializer();  
  40.           
  41.         XmlSerializer serializer = Xml.newSerializer(); //由android.util.Xml创建一个XmlSerializer实例  
  42.         StringWriter writer = new StringWriter();  
  43.         serializer.setOutput(writer);   //设置输出方向为writer  
  44.         serializer.startDocument("UTF-8"true);  
  45.         serializer.startTag("""books");  
  46.         for (Book book : books) {  
  47.             serializer.startTag("""book");  
  48.             serializer.attribute("""id", book.getId() + "");  
  49.               
  50.             serializer.startTag("""name");  
  51.             serializer.text(book.getName());  
  52.             serializer.endTag("""name");  
  53.               
  54.             serializer.startTag("""price");  
  55.             serializer.text(book.getPrice() + "");  
  56.             serializer.endTag("""price");  
  57.               
  58.             serializer.endTag("""book");  
  59.         }  
  60.         serializer.endTag("""books");  
  61.         serializer.endDocument();  
  62.           
  63.         return writer.toString();  
  64.     }  
  65. }  

以上是关于xml文件解析和序列化的主要内容,如果未能解决你的问题,请参考以下文章

GroovyXml 反序列化 ( 使用 XmlParser 解析 Xml 文件 | 删除 Xml 文件中的节点 | 增加 Xml 文件中的节点 | 将修改后的 Xml 数据输出到文件中 )

从 XML 声明片段获取 XML 编码:部分内容解析不支持 XmlDeclaration

xml文件解析和序列化

java解析xml的几种方式哪种最好?

Android之DOM解析XML

Android之DOM解析XML