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;
}
}
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;
}
}
}
相关推荐
更为方便的是android SDK中提供了DefaultHandler和DefaultHandler2 来协助我们完成构建XML handler,事实上DefaultHandler本身实现了 ContentHander、DTDHander、ErrorHandler,以及EntityResolver这4个接口,相当于把...
android xml解析与构建,代码jar
Android解析xml文件的3种方式 Android开发教程之使用android和xml构建动态用户界面 基于Android的XML解析技术的分析
Android GPX解析器为Android构建的用于解析XML Gpx文件的库。 参考架构是 。使用此库的项目:要在此处列出您的项目,请给我发送电子邮件或打开PR。下载通过Gradle抓取: api ' io.ticofab.androidgpxparser:parser:...
一个解析XML GPX文件的库,为Android构建。引用模式是topografix gpx 1.1。欢迎拉取请求!
为更好地利用本文,您应该使用 Android SDK 来构造 Android 应用程序。完成本文之后,您将了解如何使用 HTTP(S) 执行从应用程序到 web 服务器的通信,以及如何使用 DOM 解析器解析 XML。在此过程中,您将创建自定义...
Pull解析方法给应用程序完全的控制文档该怎么样被解析。Android中对Pull方法提供了支持的API,主要是 代码如下:org.xmlpull.v1.XmlPullParser;org.xmlpull.v1.XmlPullParserFactory;二个类,其中主要使用的是...
解析XML的方式有很多种,大家比较熟悉的可能就是DOM解析。 DOM(文件对象模型)解析:解析器读入整个文档,然后构建一个驻留内存的树结构,然后代码就可以根据DOM接口来操作这个树结构了。 优点:整个文档读入内存,...
Android String XML Reference是一个Gradle插件,可在构建时将XML字符串的占位符解析为其他XML字符串。 您无需在项目中编写任何Java或Kotlin代码即可使其工作,并且仍然可以像在XML文件中手动添加任何其他字符串一样...
Android APK 解析器 使用Android Interface等工具解析APK文件获取manifest。使用android api做原型实现的APK包解析,用于J2SE环境中读取APK做验证。 特征 在 apk 中解码 manifest.xml。 解码资源。 在 apk 中。 ...
� 由于采用了 Java 作为应用开发语言,目前可用的传统第三方应用还很少,但由于 Android 是一款完全 开 源的移动计算平台,相信第三方应用会很快的丰富起来。 � Google 提供了一套 Java 核心包 (J2SE 5,J2SE 6) 的...
2、掌握用Eclipse进行Android平台的UI基本设计、HTTP网络协议及XML文件解析等关键技术的实现,深刻理解XMPP(可扩展消息处理现场协议)协议; 3、学习使用MVC模式来构建系统的客户端,并掌握这种程序设计模式,分析...
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 ...
读取XML文件,解析为Totalcross并在Linux ARM,iOS,Android等平台上运行。 在这里,我们有第二个任务,名为KnowCodeXML。 KnowcodeXML是一个库,可解释Android XML文件并生成Totalcross屏幕,这些屏幕可在Android...
针对一个老年社交娱乐...利用 Eclipse 集成开发环境,采用xml布局、ViewPager、PagerAdaper、Animation动画、ScrollView、读取xml文件、jsoup解析web网页内容、Android Location、重力感应监听SensoreventListener等
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服务器...
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 应用程序中获得的列表数据XML文件,对XML文件中的数据实现分离,得到指定的所需要 的信息,然后执行存入数据库或显示到页面等相应的处理。 Android的开发组Activity、Intent Receiver、Service、Content...