`
ice.k
  • 浏览: 286785 次
  • 性别: Icon_minigender_1
  • 来自: 荷兰
社区版块
存档分类
最新评论

Android 采用pull生成XML数据

阅读更多
/*
有些时候,我们需要生成一个XML文件,生成XML文件的方法有很多,如:可以只使用一个StringBuilder组拼XML内容,然后把内容写入到文件中;或者使用DOM API生成XML文件,或者也可以使用pull解析器生成XML文件,这里推荐大家使用Pull解析器。
使用Pull解析器生成一个与itcast.xml文件内容相同的myitcast.xml文件,代码在本页下方备注
使用代码如下(生成XML文件):
File xmlFile = new File("myitcast.xml");
FileOutputStream outStream = new FileOutputStream(xmlFile);
OutputStreamWriter outStreamWriter = new OutputStreamWriter(outStream, "UTF-8");
BufferedWriter writer = new BufferedWriter(outStreamWriter);
writeXML(persons, writer);
writer.flush();
writer.close();
如果只想得到生成的xml字符串内容,可以使用StringWriter:
StringWriter writer = new StringWriter();
writeXML(persons, writer);
String content = writer.toString();
*/ 


view plaincopy to clipboardprint?
<?xml version="1.0" encoding="UTF-8"?> 
<persons> 
    <person id="23"> 
        <name>zhangsan</name> 
        <age>25</age> 
    </person> 
    <person id="20"> 
        <name>lisi</name> 
        <age>28</age> 
    </person> 
</person 

view plaincopy to clipboardprint?
package com.zyq.voo; 
public class Person 

     
    private Integer id; 
    private String name; 
    private Short age; 
     
    public Person() 
    { 
         
    } 
     
    public Person(Integer id, String name, Short age) 
    { 
        super(); 
        this.id = id; 
        this.name = name; 
        this.age = age; 
    } 
    public Integer getId() 
    { 
        return id; 
    } 
    public void setId(Integer id) 
    { 
        this.id = id; 
    } 
    public String getName() 
    { 
        return name; 
    } 
    public void setName(String name) 
    { 
        this.name = name; 
    } 
    public Short getAge() 
    { 
        return age; 
    } 
    public void setAge(Short age) 
    { 
        this.age = age; 
    } 
    @Override 
    public String toString() 
    { 
        return "Person [id=" + id + ", name=" + name + ", age=" + age + "]"; 
    } 


view plaincopy to clipboardprint?
<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
      package="com.zyq.xml" 
      android:versionCode="1" 
      android:versionName="1.0"> 
    <application android:icon="@drawable/icon" android:label="@string/app_name"> 
    <uses-library android:name="android.test.runner" /> 
        <activity android:name=".MainActivity" 
                  android:label="@string/app_name"> 
            <intent-filter> 
                <action android:name="android.intent.action.MAIN" /> 
                <category android:name="android.intent.category.LAUNCHER" /> 
            </intent-filter> 
        </activity> 
    </application> 
    <uses-sdk android:minSdkVersion="8" /> 
    <instrumentation android:name="android.test.InstrumentationTestRunner" 
    android:targetPackage="com.zyq.xml" android:label="Tests for My App" /> 
     
</manifest>  

view plaincopy to clipboardprint?
package com.zyq.xml; 
import java.io.File; 
import java.io.FileOutputStream; 
import java.io.InputStream; 
import java.util.ArrayList; 
import java.util.List; 
import com.zyq.service.DOMPersonService; 
import com.zyq.service.PullBuildXMLService; 
import com.zyq.service.PullPersonService; 
import com.zyq.service.SAXPersonService; 
import com.zyq.voo.Person; 
import android.test.AndroidTestCase; 
import android.util.Log; 
public class PersonServiceTest extends AndroidTestCase 

    private static final String TAG="PersonServiceTest"; 
    /**
     * 测试 SAX解析XML数据
     * @throws Throwable
     */ 
    public void testSAX() throws Throwable 
    { 
        SAXPersonService personService=new SAXPersonService(); 
        InputStream inputStream=this.getClass().getClassLoader().getResourceAsStream("person.xml"); 
        List<Person> persons=personService.getPersons(inputStream); 
        for(Person person : persons) 
        { 
            Log.i(TAG, person.toString()); 
        } 
    } 
    /**
     * 测试 DOM解析XML数据
     * @throws Throwable
     */ 
    public void testDOM() throws Throwable 
    { 
        DOMPersonService personService=new DOMPersonService(); 
        InputStream inputStream=this.getClass().getClassLoader().getResourceAsStream("person.xml"); 
        List<Person> persons=personService.getPersons(inputStream); 
        for(Person person : persons) 
        { 
            Log.i(TAG, person.toString()); 
        } 
    } 
    /**
     * 测试 PULL解析XML数据
     * @throws Throwable
     */ 
    public void testPull() throws Throwable 
    { 
        PullPersonService personService=new PullPersonService(); 
        InputStream inputStream=this.getClass().getClassLoader().getResourceAsStream("person.xml"); 
        List<Person> persons=personService.getPersons(inputStream); 
        for(Person person : persons) 
        { 
            Log.i(TAG, person.toString()); 
        } 
    } 
     
    public void testPullBuildXML() throws Throwable 
    { 
        List<Person> persons=new ArrayList<Person>(); 
        persons.add(new Person(1001,"张三",(short)30)); 
        persons.add(new Person(1002,"李四",(short)18)); 
        persons.add(new Person(1003,"王二麻子",(short)21)); 
        persons.add(new Person(1004,"朱大",(short)25)); 
        persons.add(new Person(1005,"林一",(short)20)); 
         
        File file=new File(this.getContext().getFilesDir(),"zyq.xml"); 
        FileOutputStream outputStream=new FileOutputStream(file); 
        PullBuildXMLService service=new PullBuildXMLService(); 
        service.buildXML(persons, outputStream); 
    } 


view plaincopy to clipboardprint?
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(); 
    } 
分享到:
评论

相关推荐

    android使用pull生成xml

    总的来说,这个“android使用pull生成xml”的项目可能包含了一个示例应用,演示了如何利用XMLPullParser来解析已有的XML数据,并根据解析结果动态生成新的XML。这在处理动态数据,如用户输入或服务器返回的数据时...

    Android利用pull生成xml文件

    "Android利用Pull生成XML文件"这一主题涉及到的是如何使用Android的Pull解析器来读取和生成XML内容。Pull解析器是一种轻量级、低级别的解析机制,与DOM(文档对象模型)和SAX(简单API for XML)解析器相比,它更...

    android之Pull解析XML文件

    在Android开发中,XML...通过创建Pull解析器实例,监听XML事件,以及适当优化,开发者可以轻松处理XML数据,实现更流畅的用户体验。在实际开发中,结合具体的业务场景灵活运用,能够大大提高应用程序的性能和稳定性。

    android xml pull解析示例

    XML(eXtensible Markup Language)是一种用于标记数据的语言,广泛应用于Android开发中,用于存储配置、布局等信息。在Android系统中,XML Pull解析是一种...在实际开发中,熟练掌握这一技术对于处理XML数据至关重要。

    Android中,使用SAX和PULL解析天气预报XML

    本文将深入探讨如何在Android中使用两种常见的XML解析技术——SAX(Simple API for XML)和PULL(Pull Parser)来解析天气预报的XML数据。这两种方法各有优缺点,适用于不同的场景。 首先,我们来看SAX解析器。SAX...

    android pull解析xml源码

    在Android平台上,XML数据解析是常见的任务,用于...总之,Android的XML Pull解析器是一个轻量级且高效的工具,适用于处理XML数据。通过理解其基本原理和操作方法,开发者可以有效地在Android应用中解析和处理XML文档。

    Android PULL解析XML

    在Android开发中,XML文件常用于...PULL解析提供了高效且内存友好的方式处理XML数据,而ButterKnife则简化了UI组件的管理,两者结合能有效提升开发效率。通过实践这些技术,开发者可以更好地构建和维护Android应用。

    android SAX PULL 解析XML文件 代码 详解

    在Android开发中,处理XML数据是一项常见的任务,无论是从服务器获取数据还是本地资源,XML都是一个常用的数据交换格式。本文将深入探讨两种主要的XML解析技术:SAX(Simple API for XML)和PULL(Pull Parser)。这...

    Android 封装pull解析xml

    在Android开发中,XML是一种常见的数据格式,用于存储和...这样,即使面对大量的XML数据,也能保持良好的性能和稳定性。在Android项目中,封装好XML Pull解析器后,调用起来将变得更加简单便捷,极大地提高了开发效率。

    Android 生成和PULL解析xml

    本文将深入探讨如何在Android中生成XML文件以及如何使用PULL解析器来解析XML数据。 首先,我们来看一下如何在Android中生成XML文件。生成XML文件通常涉及创建一个XMLWriter对象,然后通过调用其方法来添加元素、...

    Android之PULL解析XML文件——新浪微博客户端首页效果

    在本主题"Android之PULL解析XML文件——新浪微博客户端首页效果"中,我们将深入探讨如何利用PULL解析器(PullParser)来处理XML数据,从而实现类似新浪微博客户端首页的动态效果。这种效果通常包括新闻标题、摘要、...

    Android之PULL解析XML

    "Android之PULL解析XML"是Android平台中处理XML数据的一种高效方式,它与SAX(Simple API for XML)类似,但更适合Android环境。PULL解析器在内存使用和性能方面进行了优化,适合于资源有限的移动设备。 PULL解析器...

    android开发之xml文件操作——xml创建和pull解析xml

    本项目主要关注的是XML的创建和使用Pull解析器来解析XML,这是Android系统中处理XML数据的一种高效方法。接下来,我们将详细讨论这两个知识点。 首先,XML(Extensible Markup Language)是一种用于标记数据的语言...

    Android ReadXmlByPull 使用Pull解析Xml文件.rar

    在Android开发中,处理XML数据是一项常见的任务,无论是从服务器获取数据还是本地资源文件,XML因其结构化的特点被广泛使用。本教程将详细介绍如何在Android中利用Pull解析器(PullParser)来读取XML文件,这是一种...

    Pull解析xml源码导入即可用

    XML(eXtensible Markup Language)是一种用于标记数据的语言,广泛应用于Android开发中,用于存储和传输数据。本文将深入探讨Android中的Pull解析...对于需要处理XML数据的Android应用,这是一个非常实用的解决方案。

    android Pull XML文件解析 存取 代码程序

    总结,Android中的Pull解析器是一种高效且节省内存的XML解析方案,尤其适合处理大型XML数据。通过合理的事件处理和数据存取策略,可以有效地在Android应用中解析和管理XML文件。在实际开发中,应根据项目需求选择...

    android使用pull解析xml

    在Android开发中,XML...总的来说,Android中的Pull解析器提供了一种灵活且高效的XML解析方式,适用于处理大量的XML数据。在实际开发中,结合具体的业务场景,合理运用Pull解析器,可以显著提升应用的性能和用户体验。

    在android中使用pull解析xml文件

    三、创建XML Pull解析器 首先,我们需要实例化`XmlPullParserFactory`,然后通过工厂方法获取`XmlPullParser`实例: ```java XmlPullParserFactory factory = XmlPullParserFactory.newInstance(); factory....

    Pull解析xml Android

    "Pull解析xml Android"这个主题聚焦于Android平台下使用Pull解析器处理XML数据的方法。 Pull解析(XMLPullParser)是Android提供的一种轻量级、低内存消耗的XML解析方式。它不同于DOM解析器(将整个XML文档加载到...

Global site tag (gtag.js) - Google Analytics