packagecom.android10;importjava.io.ByteArrayInputStream;importjava.io.ByteArrayOutputStream;importjava.util.ArrayList;importjava.util.List;importjavax.xml.transform.OutputKeys;importjavax.xml.transform.Source;importjavax.xml.transform.Transformer;importjavax.xml.transform.sax.SAXSource;importjavax.xml.transform.sax.SAXTransformerFactory;importjavax.xml.transform.stream.StreamResult;importorg.xml.sax.InputSource;importandroid.app.Activity;importandroid.os.Bundle;importcom.thoughtworks.xstream.XStream;public class MainActivity extendsActivity {
@Overridepublic voidonCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);
setContentView( R.layout.activity_main );
XStream xstream= newXStream() ;
List root =getList() ;//将ListBean中的集合设置空元素,即不显示集合元素标签
xstream.addImplicitCollection( ListBean.class, "root");
xstream.autodetectAnnotations(true);//设置别名
xstream.alias( "product", Product.class);//将name设置为父类(Student)的元素的属性
xstream.useAttributeFor( Product.class, "name");//把list集合转换成Xml字符串
String xmlString =xstream.toXML( root ) ;//把Xml字符串写入SD卡Xml文件
XstreamUtil xstreamUtil = newXstreamUtil() ;
xstreamUtil.writeToXml(this, xmlString ) ;//把Xml字符串转化成list集合
List list = new ArrayList() ;
list= (List) xstream.fromXML( xmlString ) ;
System.out.println("sss"+formatXml( xmlString ) );
}/*** 得到数据
*@return
*/
private ListgetList(){
Person person1= newPerson() ;
person1.setpName("saliy") ;
person1.setpAge("36");
Product product1= newProduct() ;
product1.setName("jhon") ;
product1.setAge("30");
product1.setPerson( person1 );
Person person2= newPerson() ;
person2.setpName("saliy02") ;
person2.setpAge("3602");
Product product2= newProduct() ;
product2.setName("jhon02") ;
product2.setAge("3002");
product2.setPerson( person2 );
List root = new ArrayList() ;
root.add( product1 ) ;
root.add( product2 ) ;returnroot ;
}/*** 格式化XML字符串
*@paramxml
*@return
*/
public staticString 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(newByteArrayInputStream(xml.getBytes())));
StreamResult res= new StreamResult(newByteArrayOutputStream());
serializer.transform(xmlSource, res);return newString(((ByteArrayOutputStream)res.getOutputStream()).toByteArray());
}catch(Exception e){returnxml;
}
}
}