`
licjava
  • 浏览: 14273 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

android 三种解析,构建xml方法

 
阅读更多



 package com.zyq.service;

import java.io.OutputStream;

import java.util.List;

import org.xmlpull.v1.XmlSerializer;

import android.util.Xml;

import com.zyq.voo.Person;

/**

 * 采用PULL  生成XML数据

 * @author Administrator

 *

 */

public class PullBuildXMLService

{

       /**

        *

        * @param persons

        * @param outputStream

        * @throws Exception

        */

       public void buildXML(List<Person> persons,OutputStream outputStream) throws Exception

       {

              XmlSerializer serializer=Xml.newSerializer();

              serializer.setOutput(outputStream, "utf-8"); //转码

             

              serializer.startDocument("utf-8", true);

              serializer.startTag(null, "persons");

             

              for(Person person:persons)

              {

                     serializer.startTag(null, "person");

                     serializer.attribute(null, "id", person.getId().toString());

                    

                     serializer.startTag(null, "name");

                     serializer.text(person.getName());

                     serializer.endTag(null, "name");

                    

                     serializer.startTag(null, "age");

                     serializer.text(person.getAge().toString());

                     serializer.endTag(null, "age");

                    

                     serializer.endTag(null, "person");

              }

             

              serializer.endTag(null, "persons");

              serializer.endDocument();

              outputStream.close();

       }

}

 

打开的结果:

 

 

 

采用官方PULL解析器解析XML数据

package com.zyq.service;

import java.io.InputStream;

import java.util.ArrayList;

import java.util.List;

import org.xmlpull.v1.XmlPullParser;

import android.util.Xml;

import com.zyq.voo.Person;

/**

 * 采用官方PULL解析器解析XML数据

 * @author Administrator

 *

 */

public class PullPersonService

{

       /**

        * 采用官方PULL解析器解析XML数据

        * @param inputStream person.xml

        * @return persons List集合

        * @throws Throwable

        */

       public List<Person> getPersons(InputStream inputStream) throws Throwable

       {

              List<Person> persons=null;

              Person person=null;

              XmlPullParser parser=Xml.newPullParser();

              parser.setInput(inputStream, "utf-8");

              int event=parser.getEventType();

             

              while(event!=XmlPullParser.END_DOCUMENT)

              {

                     switch (event)

                     {

                            case XmlPullParser.START_DOCUMENT:

                                  

                                   persons=new ArrayList<Person>();

                                  

                                   break;

                            case XmlPullParser.START_TAG:

                                  

                                   if("person".equals(parser.getName()))

                                   {

                                          person=new Person();

                                          Integer id=new Integer(parser.getAttributeValue(0));

                                          person.setId(id);

                                   }

                                   if(person!=null)

                                   {

                                          if("name".equals(parser.getName()))

                                          {

                                                 String name=parser.nextText().toString();

                                                 person.setName(name);

                                          }

                                          else if("age".equals(parser.getName()))

                                          {

                                                 Short age=new Short(parser.nextText().toString());

                                                 person.setAge(age);

                                          }

                                   }

                                   break;

                           

                            case XmlPullParser.END_TAG:

                                  

                                   if("person".equals(parser.getName()))

                                   {

                                          persons.add(person);

                                          person=null;

                                   }

                                  

                                   break;

                                  

                            default:

                                   break;

                     }

                     event=parser.next();

              }

              return persons;

       }

}

 

 

通过dom创建一个xml文件

package com.domxmltest;

 

import java.io.File;

import javax.xml.parsers.DocumentBuilder;

import javax.xml.parsers.DocumentBuilderFactory;

import javax.xml.transform.OutputKeys;

import javax.xml.transform.Transformer;

import javax.xml.transform.TransformerFactory;

import javax.xml.transform.dom.DOMSource;

import javax.xml.transform.stream.StreamResult;

import org.w3c.dom.Document;

import org.w3c.dom.Element;

 

public class CreateXML {

public static void main(String[] args) {

Document doc;

//声明xml文档中的各个元素对象

Element students,student;

Element name=null;

Element address=null;

Element tel=null;

Element email=null;

 

try{

//得到dom解析器的工厂实例

DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();

//dom工厂实例获得dom解析器

DocumentBuilder builder=factory.newDocumentBuilder();

//创建文档树模型对象

doc=builder.newDocument();

//如果创建的文档树模型不为空

if(null!=doc){

//创建students元素

students=doc.createElement(“students”);

//创建student元素

student=doc.createElement(“student”);

//设置student元素的属性id的值为95003

student.setAttribute(id, 95003);

//student元素添加为students的子元素

students.appendChild(student);

//创建name元素

name=doc.createElement(“name”);

//将一个文本结点添加为name元素的子结点

name.appendChild(doc.createTextNode(“Mr. Zhang”));

//name元素添加为student的子元素

student.appendChild(name);

address=doc.createElement(“address”);

address.appendChild(doc.createTextNode(“Shangdong Qingdao”));

student.appendChild(address);

tel=doc.createElement(“tel”);

tel.appendChild(doc.createTextNode((0532)888888));

student.appendChild(tel);

email=doc.createElement(“email”);

email.appendChild(doc.createTextNode(“xy21@xy21.info”));

student.appendChild(email);

//students元素作为根元素添加到xml文档树中

doc.appendChild(students);

//将内存中的文档树保存为students.xml文档

Transformer transformer=TransformerFactory.newInstance().newTransformer();//得到转换器

//设置换行

transformer.setOutputProperty(OutputKeys.INDENT, “yes”);

//写入文件

transformer.transform(new DOMSource(doc), new StreamResult(new File(“d:/student.xml”)));

}

}catch (Exception e) {

e.printStackTrace();

}

}

}

 

 

采用DOM完成XML的解析

package com.zyq.service;

import java.io.InputStream;

import java.util.ArrayList;

import java.util.List;

import javax.xml.parsers.DocumentBuilder;

import javax.xml.parsers.DocumentBuilderFactory;

import org.w3c.dom.Document;

import org.w3c.dom.Element;

import org.w3c.dom.Node;

import org.w3c.dom.NodeList;

import com.zyq.voo.Person;

/**

 * 采用DOM完成XML的解析

 * @author Administrator

 *

 */

public class DOMPersonService

{

       /**

        * DOM 解析person.xml

        * @param inputStream person.xml数据

        * @return persons

        * @throws Exception

        */

       public List<Person> getPersons(InputStream inputStream) throws Exception

       {

              List<Person> persons=new ArrayList<Person>();

              DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();

              DocumentBuilder builder=factory.newDocumentBuilder();

              Document document=builder.parse(inputStream);

              Element element=document.getDocumentElement();

              NodeList nodeList=element.getElementsByTagName("person");

              for(int i=0;i<nodeList.getLength();i++)

              {

                     Element personNode=(Element)nodeList.item(i);

                     Integer id=new Integer(personNode.getAttribute("id"));

                     Person person=new Person();

                     person.setId(id);

                    

                     NodeList childNodes=personNode.getChildNodes();

                     for(int j=0;j<childNodes.getLength();i++)

                     {

                            if(childNodes.item(j).getNodeType()==Node.ELEMENT_NODE)

                            {

                                   if("name".equals(childNodes.item(j).getNodeName()))

                                   {

                                          String name=childNodes.item(j).getFirstChild().getNodeName();

                                          person.setName(name);

                                   }

                                   else if("age".equals(childNodes.item(j).getNodeName()))

                                   {

                                          Short age=new Short(childNodes.item(j).getFirstChild().getNodeName());

                                          person.setAge(age);

                                   }

                            }

                     }

                     persons.add(person);

              }

             

              return persons;

       }

}

 

SAX解析person.xml

package com.zyq.service;

import java.io.InputStream;

import java.util.ArrayList;

import java.util.List;

import javax.xml.parsers.SAXParser;

import javax.xml.parsers.SAXParserFactory;

import org.xml.sax.Attributes;

import org.xml.sax.SAXException;

import org.xml.sax.helpers.DefaultHandler;

import com.zyq.voo.Person;

public class SAXPersonService

{

       /**

        * SAX解析person.xml

        * @param inputStream  person.xml数据

        * @return persons

        * @throws Throwable

        */

       public List<Person> getPersons(InputStream inputStream) throws Throwable

       {

              SAXParserFactory factory=SAXParserFactory.newInstance();

              SAXParser parser=factory.newSAXParser();

              PersonHandel personHandel=new PersonHandel();

              parser.parse(inputStream, personHandel);

             

              return personHandel.getPersons();

       }

      

       private class PersonHandel extends DefaultHandler

       {

              private List<Person> persons;

              private String preTAG;

              private Person person;

             

              public List<Person> getPersons()

              {

                     return persons;

              }

              @Override

              public void characters(char[] ch, int start, int length)

                            throws SAXException

              {

                     if(preTAG!=null)

                     {

                            String data=new String(ch, start, length);

                            if("name".equals(preTAG))

                            {

                                   person.setName(data);

                            }

                            else if("age".equals(preTAG))

                            {

                                   person.setAge(new Short(data));

                            }

                     }

              }

              @Override

              public void startElement(String uri, String localName, String qName,

                            Attributes attributes) throws SAXException

              {

                     if("person".equals(localName))

                     {

                            person=new Person();

                            Integer id= new Integer(attributes.getValue(0));

                            person.setId(id);

                     }

                     preTAG=localName;

              }

             

              @Override

              public void startDocument() throws SAXException

              {

                     persons=new ArrayList<Person>();

              }

             

              @Override

              public void endElement(String uri, String localName, String qName)

                            throws SAXException

              {

                     if("person".equals(localName))

                     {

                            persons.add(person);

                            person=null;

                     }

                    

                     preTAG=null;

              }

             

       }

}

 

  • 大小: 39.6 KB
分享到:
评论

相关推荐

    android xml解析1

    更为方便的是android SDK中提供了DefaultHandler和DefaultHandler2 来协助我们完成构建XML handler,事实上DefaultHandler本身实现了 ContentHander、DTDHander、ErrorHandler,以及EntityResolver这4个接口,相当于把...

    android xml解析与构建

    android xml解析与构建,代码jar

    Android解析xml

    Android解析xml文件的3种方式 Android开发教程之使用android和xml构建动态用户界面 基于Android的XML解析技术的分析

    android-gpx-parser:解析XML Gpx文件的库,为Android构建

    Android GPX解析器为Android构建的用于解析XML Gpx文件的库。 参考架构是 。使用此库的项目:要在此处列出您的项目,请给我发送电子邮件或打开PR。下载通过Gradle抓取: api ' io.ticofab.androidgpxparser:parser:...

    android-gpx-parser,一个解析XML GPX文件的库,为Android构建。.zip

    一个解析XML GPX文件的库,为Android构建。引用模式是topografix gpx 1.1。欢迎拉取请求!

    Android_和_XML_构建动态用户界面

    为更好地利用本文,您应该使用 Android SDK 来构造 Android 应用程序。完成本文之后,您将了解如何使用 HTTP(S) 执行从应用程序到 web 服务器的通信,以及如何使用 DOM 解析器解析 XML。在此过程中,您将创建自定义...

    Android 使用Pull方法解析XML文件的方法

    Pull解析方法给应用程序完全的控制文档该怎么样被解析。Android中对Pull方法提供了支持的API,主要是 代码如下:org.xmlpull.v1.XmlPullParser;org.xmlpull.v1.XmlPullParserFactory;二个类,其中主要使用的是...

    详解android使用SAX解析XML文件

    解析XML的方式有很多种,大家比较熟悉的可能就是DOM解析。 DOM(文件对象模型)解析:解析器读入整个文档,然后构建一个驻留内存的树结构,然后代码就可以根据DOM接口来操作这个树结构了。 优点:整个文档读入内存,...

    android-string-reference:这是Android应用程序的Gradle插件,可解析其他XML字符串中的XML字符串引用

    Android String XML Reference是一个Gradle插件,可在构建时将XML字符串的占位符解析为其他XML字符串。 您无需在项目中编写任何Java或Kotlin代码即可使其工作,并且仍然可以像在XML文件中手动添加任何其他字符串一样...

    android-apk-parser:用于 J2EE 的 Android APK 文件解析器

    Android APK 解析器 使用Android Interface等工具解析APK文件获取manifest。使用android api做原型实现的APK包解析,用于J2SE环境中读取APK做验证。 特征 在 apk 中解码 manifest.xml。 解码资源。 在 apk 中。 ...

    新版Android开发教程.rar

    � 由于采用了 Java 作为应用开发语言,目前可用的传统第三方应用还很少,但由于 Android 是一款完全 开 源的移动计算平台,相信第三方应用会很快的丰富起来。 � Google 提供了一套 Java 核心包 (J2SE 5,J2SE 6) 的...

    基于Android平台的即时通信系统的设计与实现

    2、掌握用Eclipse进行Android平台的UI基本设计、HTTP网络协议及XML文件解析等关键技术的实现,深刻理解XMPP(可扩展消息处理现场协议)协议; 3、学习使用MVC模式来构建系统的客户端,并掌握这种程序设计模式,分析...

    精通ANDROID 3(中文版)1/2

    6.1.3 使用XML结合代码构建UI  6.2 Android中的常见控件  6.2.1 文本控件  6.2.2 按钮控件  6.2.3 ImageView控件  6.2.4 日期和时间控件  6.2.5 MapView控件  6.3 适配器  6.3.1 ...

    knowcode-xml:该库使开发人员可以在Linux ARM,iOS,Android等平台上运行Android XML UI + TotalCross。

    读取XML文件,解析为Totalcross并在Linux ARM,iOS,Android等平台上运行。 在这里,我们有第二个任务,名为KnowCodeXML。 KnowcodeXML是一个库,可解释Android XML文件并生成Totalcross屏幕,这些屏幕可在Android...

    基于Android老年社交娱乐系统

    针对一个老年社交娱乐...利用 Eclipse 集成开发环境,采用xml布局、ViewPager、PagerAdaper、Animation动画、ScrollView、读取xml文件、jsoup解析web网页内容、Android Location、重力感应监听SensoreventListener等

    疯狂Android讲义源码

     12.4.1 构建3D图形 465  12.4.2 应用纹理贴图 469  12.5 本章小结 475  第13章 Android的网络应用 476  13.1 基于TCP协议的网络通信 477  13.1.1 TCP协议基础 477  13.1.2 使用ServerSocket创建  TCP服务器...

    精通Android 3 (中文版)2/2

    6.1.3 使用XML结合代码构建UI  6.2 Android中的常见控件  6.2.1 文本控件  6.2.2 按钮控件  6.2.3 ImageView控件  6.2.4 日期和时间控件  6.2.5 MapView控件  6.3 适配器  6.3.1 ...

    (完整)Android手机天气预报项目报告.doc

    解析Android 应用程序中获得的列表数据XML文件,对XML文件中的数据实现分离,得到指定的所需要 的信息,然后执行存入数据库或显示到页面等相应的处理。 Android的开发组Activity、Intent Receiver、Service、Content...

Global site tag (gtag.js) - Google Analytics