日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

android XMl 解析神奇xstream 六: 把集合list 转化为 XML文档

發(fā)布時間:2024/9/30 asp.net 89 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android XMl 解析神奇xstream 六: 把集合list 转化为 XML文档 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
前言:對xstream不理解的請看:

android XMl 解析神奇xstream 一: 解析android項目中 asset 文件夾 下的 aa.xml 文件

android XMl 解析神奇xstream 二: 把對象轉(zhuǎn)換成xml

android XMl 解析神奇xstream 三: 把復(fù)雜對象轉(zhuǎn)換成 xml

android XMl 解析神奇xstream 四: 將復(fù)雜的xml文件解析為對象

android XMl 解析神奇xstream 五: 把復(fù)雜對象轉(zhuǎn)換成 xml ,并寫入SD卡中的xml文件

?

1、創(chuàng)建JavaBeen

?

package com.android10;public class Person {String pName ;String pAge ;public String getpName() {return pName;}public void setpName(String pName) {this.pName = pName;}public String getpAge() {return pAge;}public void setpAge(String pAge) {this.pAge = pAge;} }

?

package com.android10;public class Product {private String name ;private String age ;private Person person ;public String getName() {return name;}public void setName(String name) {this.name = name;}public String getAge() {return age;}public void setAge(String age) {this.age = age;}public Person getPerson() {return person;}public void setPerson(Person person) {this.person = person;} }

?

package com.android10;import java.util.List;public class ListBean {private List<Product> root ;public List<Product> getRoot() {return root;}public void setRoot(List<Product> root) {this.root = root;}}


2、主要方法

?

package com.android10; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.util.ArrayList; import java.util.List;import javax.xml.transform.OutputKeys; import javax.xml.transform.Source; import javax.xml.transform.Transformer; import javax.xml.transform.sax.SAXSource; import javax.xml.transform.sax.SAXTransformerFactory; import javax.xml.transform.stream.StreamResult;import org.xml.sax.InputSource;import android.app.Activity; import android.os.Bundle;import com.thoughtworks.xstream.XStream; public class MainActivity extends Activity {@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView( R.layout.activity_main );XStream xstream = new XStream() ;List<Product> root = getList() ;//將ListBean中的集合設(shè)置空元素,即不顯示集合元素標(biāo)簽xstream.addImplicitCollection( ListBean.class, "root");xstream.autodetectAnnotations(true);//設(shè)置別名xstream.alias( "product", Product.class );//將name設(shè)置為父類(Student)的元素的屬性xstream.useAttributeFor( Product.class, "name" );//把list集合轉(zhuǎn)換成Xml字符串String xmlString = xstream.toXML( root ) ;//把Xml字符串寫入SD卡Xml文件XstreamUtil xstreamUtil = new XstreamUtil() ;xstreamUtil.writeToXml( this , xmlString ) ;//把Xml字符串轉(zhuǎn)化成list集合List<Product> list = new ArrayList<Product>() ;list = (List<Product>) xstream.fromXML( xmlString ) ;System.out.println("sss"+ formatXml( xmlString ) );}/*** 得到數(shù)據(jù)* @return*/private List<Product> getList(){Person person1 = new Person() ;person1.setpName( "saliy" ) ;person1.setpAge( "36" );Product product1 = new Product() ;product1.setName( "jhon" ) ;product1.setAge( "30" );product1.setPerson( person1 );Person person2 = new Person() ;person2.setpName( "saliy02" ) ;person2.setpAge( "3602" );Product product2 = new Product() ;product2.setName( "jhon02" ) ;product2.setAge( "3002" );product2.setPerson( person2 );List<Product> root = new ArrayList<Product>() ;root.add( product1 ) ;root.add( product2 ) ;return root ;}/*** 格式化XML字符串* @param xml* @return*/public static String formatXml(String xml){try{Transformer serializer= SAXTransformerFactory.newInstance().newTransformer();serializer.setOutputProperty(OutputKeys.INDENT, "yes");serializer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2");Source xmlSource=new SAXSource(new InputSource(new ByteArrayInputStream(xml.getBytes())));StreamResult res = new StreamResult(new ByteArrayOutputStream()); serializer.transform(xmlSource, res);return new String(((ByteArrayOutputStream)res.getOutputStream()).toByteArray());}catch(Exception e){ return xml;}} }

?

package com.android10;import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStreamWriter;import android.content.Context; import android.os.Environment;public class XstreamUtil {XcallBack xcallBack ;/*** 把xml字符串寫入SD卡文件* @param context* @param str  xml字符串*/public void writeToXml(Context context, String str ){ //獲取文件路徑String SDPATH = Environment.getExternalStorageDirectory() + "/myfile1.xml/" ;//創(chuàng)建文件File file = new File( SDPATH ) ;if( !file.exists() ){try {file.createNewFile() ;} catch (IOException e) {e.printStackTrace();} }//寫入數(shù)據(jù)try {FileOutputStream out = new FileOutputStream( file ) ;OutputStreamWriter outw = new OutputStreamWriter(out); try { outw.write(str); outw.close(); out.close(); if( xcallBack != null ){xcallBack.success(); }} catch (IOException e) { if( xcallBack != null ){xcallBack.fail(); }} } catch (FileNotFoundException e1) {e1.printStackTrace();if( xcallBack != null ){xcallBack.fail(); }}} //設(shè)置監(jiān)聽器void setXStreamLister( XcallBack xcallBack ){this.xcallBack = xcallBack ;}}interface XcallBack{/*** 寫入成功*/void success() ; /*** 寫入失敗*/void fail() ; }

?

3、運行結(jié)果

<list>
? <product name="jhon">
??? <age>30</age>
??? <person>
????? <pAge>36</pAge>
????? <pName>saliy</pName>
??? </person>
? </product>

? <product name="jhon02">
??? <age>3002</age>
??? <person>
????? <pAge>3602</pAge>
????? <pName>saliy02</pName>
??? </person>
? </product>
</list>

?

總結(jié)

以上是生活随笔為你收集整理的android XMl 解析神奇xstream 六: 把集合list 转化为 XML文档的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。