首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > XML SOAP >

pull 生成xml(用网下方法为空有关问题)

2012-09-13 
pull 生成xml(用网上方法为空问题)利用网上的方法用pull生成xml讲解的都很清楚,但是用StringWriter去试,根

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();  }}
?

?

热点排行