android保存数据到xml以及pull解析模板

import android.content.Context;
import android.text.TextUtils;
import android.util.Xml;

import com.webjet.yzqg.domain.BaseDocs;
import com.webjet.yzqg.domain.UnitDTO;

import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlSerializer;

import java.io.FileOutputStream;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;

/**
 * Created by Administrator on 2016/7/20 0020.
 */
public class UnitService {
    private Context mContext;
    public UnitService(Context mContext){
        this.mContext = mContext;
    }
    /***
     * 读取unit.xml文件
     * @return 单位集合对象
     * @throws Exception
     */
    public List<UnitDTO> getUnitList() throws Exception{
        List<UnitDTO> unitDTOList = null;
        UnitDTO unitDTO = null;
        XmlPullParser pullParser = Xml.newPullParser();

        pullParser.setInput(mContext.openFileInput("unit.xml"), "UTF-8");
        int event = pullParser.getEventType();//触发第一个事件
        while(event !=XmlPullParser.END_DOCUMENT){
            switch(event){
                case XmlPullParser.START_DOCUMENT:
                    unitDTOList = new ArrayList<UnitDTO>();
                    break;
                case XmlPullParser.START_TAG:
                    if("doc".equals(pullParser.getName())){
                        unitDTO = new UnitDTO();
                    }
                    if("name".equals(pullParser.getName())){
                        unitDTO.setName(pullParser.nextText());
                    }if("id".equals(pullParser.getName())){
                        unitDTO.setID(new Integer(pullParser.nextText()));
                    }if("parentId".equals(pullParser.getName())){
                        unitDTO.setParentID(new Integer(pullParser.nextText()));
                    }
                    if("unitLevel".equals(pullParser.getName())){
                    unitDTO.setUnitLevel(new Integer(pullParser.nextText()));
                }   if("location".equals(pullParser.getName())){
                        unitDTO.setLOCATION(pullParser.nextText());
                    }
                    break;
                case XmlPullParser.END_TAG:
                    String value = pullParser.getName();
                    if(value.equals("doc")&&unitDTO!=null&&unitDTOList!=null)
                    {
//                     添加对象到list中
                        unitDTOList.add(unitDTO);
                        unitDTO = null;
                    }
                    break;
            }
            event = pullParser.next();

        }
        return unitDTOList;
    }

//保存单位集合到unit.xml文件中
public void save(List<UnitDTO> values, String fileName){
    if(values==null||values.isEmpty()){
        return;
    }
    if(TextUtils.isEmpty(fileName)){
        fileName="unit.xml";
    }
    try {
        XmlSerializer serializer = Xml.newSerializer();//获取XML写入信息的序列化对象
        FileOutputStream outStream = mContext.openFileOutput(fileName, Context.MODE_PRIVATE);
        serializer.setOutput(outStream, "UTF-8");//设置要写入的OutputStream
        serializer.startDocument("UTF-8", true);//设置文档标签
        serializer.startTag(null, "docs");//设置开始标签,第一个参数为namespace
        for (UnitDTO doc : values) {
            serializer.startTag(null, "doc");

            serializer.startTag(null, "name");
            serializer.text(doc.getName());
            serializer.endTag(null, "name");

            serializer.startTag(null, "id");
            serializer.text(doc.getID() + "");
            serializer.endTag(null, "id");

            serializer.startTag(null, "parentId");
            serializer.text(doc.getParentID() + "");
            serializer.endTag(null, "parentId");

            serializer.startTag(null, "unitLevel");
            serializer.text(doc.getUnitLevel() + "");
            serializer.endTag(null, "unitLevel");

            serializer.startTag(null, "location");
            serializer.text(doc.getLOCATION() + "");
            serializer.endTag(null, "location");

            serializer.endTag(null, "doc");
        }
        serializer.endTag(null, "docs");
        serializer.endDocument();

        outStream.flush();
        outStream.close();
    }catch (Exception e){
        e.printStackTrace();
    }
}
}
时间: 2024-10-13 11:30:53

android保存数据到xml以及pull解析模板的相关文章

网络获取数据的Xml的Pull解析

网络获取的XML的Pull解析 <?xml version="1.0" encoding="utf-8" ?> - <students> - <student xuehao="1233">  <name>张三</name>   <address>北京市昌平区</address> - <call>  <phone>010-37464567&l

android中xml的pull解析

xml的pull解析:    //类加载器加载xml文件 InputStream is = MainActivity.class.getClassLoader().getResourceAsStream("weather.xml"); //生成xml的pull解析器 XmlPullParser pull = Xml.newPullParser(); try { //设置输入流 pull.setInput(is, "utf-8"); //解析器当前处于的状态 int

Android 5.0 system_fonts.xml文件的解析过程

Android 5.0 system_fonts.xml文件的解析过程 首先看看看5.0 中familyset version="22" 的格式 20 <family name="sans-serif"> 21 <font weight="100" style="normal">Roboto-Thin.ttf</font> 22 <font weight="100"

Day01—xml的序列化、xml的pull解析

1.xml的序列化 FileOutputStream os = new FileOutputStream(new File(getFilesDir(),"hai.xml")); //1.获取xml序列化器 XmlSerializer xmlSerializer = Xml.newSerializer(); //2.开始序列化输出流 xmlSerializer.setOutput(os,"utf-8");//os---Outputm,xml文件的写出流,文件的编码格式

无废话Android之android下junit测试框架配置、保存文件到手机内存、android下文件访问的权限、保存文件到SD卡、获取SD卡大小、使用SharedPreferences进行数据存储、使用Pull解析器操作XML文件、android下操作sqlite数据库和事务(2)

1.android下junit测试框架配置 单元测试需要在手机中进行安装测试 (1).在清单文件中manifest节点下配置如下节点 <instrumentation android:name="android.test.InstrumentationTestRunner" android:targetPackage="com.example.demo1" /> 上面targetPackage指定的包要和应用的package相同. (2)在清单文件中ap

android学习二十一(使用Pull解析xml)

使用Pull解析xml 为了测试从网上得到的数据信息,我们需要配置一台服务器,我使用的是tomcat6.0,怎么配置tomcat我就不讲解了.配置好了以后在apache-tomcat-6.0.39\webapps\ROOT路径下面放置一个文件就可以通过浏览器来访问了 ,比如:放置了 一个hello.html文件,浏览器进行访问的路径是:http://localhost:8080/hello.html 现在在root目录下新建一个get_data.xml文件,内容如下: <apps> <a

Android中的XML的Pull解析与生成

1.Pull解析简介 Pull解析是Android系统内置的一种对XML的解析方式,它与SAX解析方式基本一致,都包括开始元素和结束元素事件,使用parser.next()可以进入下一个元素并触发相应事件.但是它们不同的是,SAX的事件驱动是回调相应方法,需要提供回调的方法,而在SAX内部自动调用相应的方法.而Pull解析器并没有强制要求提供触发的方法.因为它触发的事件并不是一个方法,而是一个数字,至于触发的时间要不要处理,这个可以由程序员自己来决定. 2.五个常量事件 Pull解析器返回的是一

XML之pull解析

PULL是STAX的一个实现技术STAX是The Streaming API for XML的缩写,是一种利用拉模式解析XML文档的APISTAX通过提供一种基于世界迭代器的API让程序员控制xml文档的解析过程A安卓系统内置的PULL解析器也可以进行XML文件的解析Pull解析器是一个java的开源项目,既可以用于安卓,也可以用于javaEEpull解析器运行方式与SAX解析器相似,同样是基于事件驱动的,是由客户端的程序自己控制xml事件主动调用事件方法当要使用pull解析的方式开发javaE

基础学习总结(四)---内存获取、XML之PULL解析

外部项目引入如果没找到工程文件要先创建一个android项目在引入. 根据要查看的项目名在项目中搜索逐步查看 ==================== 内存详情获取: 1 public class MainActivity extends Activity { 2 3 @Override 4 protected void onCreate(Bundle savedInstanceState) { 5 super.onCreate(savedInstanceState); 6 setContent