xml 使用PULL解析器
发布时间:2020-12-16 05:01:19 所属栏目:百科 来源:网络整理
导读:import java.io.InputStream;import java.io.StringWriter;import java.util.ArrayList;import java.util.List;import org.xmlpull.v1.XmlPullParser;import org.xmlpull.v1.XmlSerializer;import android.util.Xml; /*?xml version='1.0' encoding='UTF-8'
import java.io.InputStream; import java.io.StringWriter; import java.util.ArrayList; import java.util.List; import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlSerializer; import android.util.Xml; /* <?xml version='1.0' encoding='UTF-8' standalone='yes' ?> <message from="192.168.10.110" to="192.168.10.112" direct="0" time="2014-04-12 15:20:10" xml:lang="en"> <data length="1000">json....data</data> <thread>thread_id</thread> </message> */ private void xml_pull_test() { //xml-pull 生成: XmlSerializer serializer = Xml.newSerializer(); //由android.util.Xml创建一个XmlSerializer实例 StringWriter writer = new StringWriter(); try { serializer.setOutput(writer); //设置输出方向为writer serializer.startDocument("UTF-8",true); serializer.startTag("","message"); serializer.attribute("","from","192.168.10.110"); serializer.attribute("","to","192.168.10.112"); serializer.attribute("","direct","0"); // direct=0 server->client,1=client->server,2=client-client,serializer.attribute("","time","2014-04-12 15:20:10"); serializer.attribute("","app","xserver");//app serializer.attribute("","xml:lang","en"); serializer.startTag("","data"); serializer.attribute("","length","1000"); serializer.text("json....data"); serializer.endTag("","data"); serializer.startTag("","thread"); serializer.text("thread_id"); serializer.endTag("","thread"); serializer.endTag("","message"); serializer.endDocument(); } catch (IllegalArgumentException e) { // TODO Auto-generated catch block System.out.println("[result] Error1:"+e.getMessage()); } catch (IllegalStateException e) { // TODO Auto-generated catch block System.out.println("[result] Error2:"+e.getMessage()); } catch (IOException e) { // TODO Auto-generated catch block System.out.println("[result] Error3:"+e.getMessage()); } System.out.println(writer.toString()); //xml-pull 解析: String xmlString=writer.toString(); XmlPullParser parser = Xml.newPullParser(); ByteArrayInputStream is = new ByteArrayInputStream(xmlString.getBytes());//.getBytes("UTF-8") try { parser.setInput(is,"UTF-8"); //设置输入流 并指明编码方式 int eventType = parser.getEventType(); while (eventType != XmlPullParser.END_DOCUMENT) { switch (eventType) { case XmlPullParser.START_DOCUMENT: break; case XmlPullParser.START_TAG: String tag=parser.getName(); System.out.println("<"+tag+">"); if (tag.equalsIgnoreCase("message")) { int na=parser.getAttributeCount(); System.out.println("na="+na); for (int i=0;i<na;i++){ String name=parser.getAttributeName(i); String value=parser.getAttributeValue(i); String type=parser.getAttributeType(i); System.out.println("["+i+"]:"+name+","+value+","+type); } //Integer.parseInt(parser.getAttributeValue(ns,"id"))); } else if (tag.equalsIgnoreCase("data")) { eventType = parser.next(); String str=parser.getText(); System.out.println(str); } else if (tag.equalsIgnoreCase("thread")) { eventType = parser.next(); String str=parser.getText();//Integer.parseInt(parser.getText()) System.out.println(str); } break; case XmlPullParser.END_TAG: String tagE=parser.getName(); System.out.println("</"+tagE+">"); if (tagE.equalsIgnoreCase("message")) { } break; } eventType = parser.next(); } } catch (IllegalArgumentException e) { // TODO Auto-generated catch block System.out.println("[result] Error1:"+e.getMessage()); } catch (IllegalStateException e) { // TODO Auto-generated catch block System.out.println("[result] Error2:"+e.getMessage()); } catch (IOException e) { // TODO Auto-generated catch block System.out.println("[result] Error3:"+e.getMessage()); } catch (XmlPullParserException e) { // TODO Auto-generated catch block e.printStackTrace(); } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |