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