pull 生成xml(用网上方法为空问题)

利用网上的方法用pull生成xml讲解的都很清楚,但是用StringWriter去试,根本无法显示

用Log.d(TAG,writer.toString())去试,结果是空的,所以一直的不到结果。加上

Log.d(TAG,“result ”+writer.toString()) 你会发现没有得到结果。但是网上的基本所有方法(我看到的)都是这样写的,怪异~~~

 

看下网上给出的源代码:

 

public static void writeXML(List<Person> persons, Writer writer) throws IllegalArgumentException, IllegalStateException, IOException{
  XmlSerializer serializer = Xml.newSerializer();
  serializer.setOutput(writer);
  //开始文档
  serializer.startDocument("UTF-8", true);
  //设置开始标签
  serializer.startTag(null, "persons");
  for(Person person:persons){
   serializer.startTag(null, "person");
   serializer.attribute("", "id", String.valueOf(person.getId()));
   
   serializer.startTag("", "name");
   serializer.text(person.getName());
   serializer.endTag("", "name");
   
   serializer.startTag("", "age");
   serializer.text(String.valueOf(person.getAge()));
   serializer.endTag("", "age");
   
   serializer.endTag(null, "person");
  }

 

这是随便copy过来的一个,仔细看就会发现一个很明显的问题 没有serializer.endTag(null, "persons");

 

但是这个不是造成错误的原因,其实更仔细的去阅读会发现问题出在serializer.endDocument();

不结束结果不会输入到writer里面。网上太多的源代码给了我们启示,也害人不浅

好了,就这样吧 贴个用于生成字符串的函数(如果需要writer则参见上面方法):

 

import java.io.IOException;
import java.io.StringWriter;
import java.util.List;

import org.xmlpull.v1.XmlSerializer;

import android.util.Xml;

public class PullXML {

	public static String writeXML(List<String> persons) throws IllegalArgumentException, IllegalStateException ,IOException{
  	  XmlSerializer serializer = Xml.newSerializer();
  	  
  	  StringWriter writer = new StringWriter();
  	  
  	  serializer.setOutput(writer);
  	  
  	  //开始文档
  	  serializer.startDocument("UTF-8", true);
  	  //设置开始标签
  	  serializer.startTag(null, "persons");
  	  for(String person:persons){
  		  
  		serializer.startTag(null,"person");
  		  
  	   serializer.startTag("", "name");
  	   serializer.attribute("", "id", person);
  	   serializer.text(person);
  	   serializer.endTag("", "name");
  	   
  	   serializer.startTag("", "age");
  	   serializer.text(person);
  	   serializer.endTag("", "age");
  	   
  	   serializer.endTag(null, "person");
  	  }
  	  
  	  serializer.endTag(null, "persons");
  	  serializer.endDocument();
 	   
 	  return writer.toString();
  }
}
 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值