1. 程式人生 > >物件轉成xml(並且序列化xml)在android中

物件轉成xml(並且序列化xml)在android中

第一種
在本地生成AppuserManager.xml檔案,並且把物件轉成了xml格式
package com.example.hasee.myxml;

import android.app.Activity;
import android.os.Bundle;
import android.os.Environment;
import android.util.Xml;
import android.view.View;
import android.widget.TextView;

import org.xmlpull.v1.XmlSerializer;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

public class MainActivity extends Activity {

    List<AppuserManager> list;
    private TextView tv_text;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        tv_text = (TextView)findViewById(R.id.tv_text);
        list = new ArrayList<AppuserManager>();
       
            AppuserManager ap = new AppuserManager("appuser", "*", "ID=1",
                    "updatetime desc", 0, 0);
            list.add(ap);
    }


    public void click(View v){
        //使用序列化器生成xml檔案
        //1、得到xml序列化器物件
        XmlSerializer xs = Xml.newSerializer();
        //2、設定序列化器的輸出流
        File file = new File(Environment.getExternalStorageDirectory(),"AppuserManager.xml");
        FileOutputStream fos;


        try {
            fos = new FileOutputStream(file);

            xs.setOutput(fos, "utf-8");
            //3、開始生成xml檔案
            xs.startDocument("utf-8", true);
            xs.startTag(null, "Root");
//            for (int i = 0; i < list.size(); i++) {
                xs.startTag(null, "SubModelNode");
                xs.attribute("","ModelName","AppUser_mod");


                xs.startTag(null, "TableName");

                xs.text(list.get(0).getTableName());
                xs.endTag(null, "TableName");

                xs.startTag(null, "Fields");
                xs.attribute("","DataType","String");
                xs.text(list.get(0).getFields());
                xs.endTag(null, "Fields");

                xs.startTag(null, "Where");
                xs.attribute("","DataType","String");
                xs.endTag(null, "Where");

                xs.startTag(null, "OrderBy");
                xs.attribute("","DataType","String");
                xs.text(list.get(0).getOrderBy());
                xs.endTag(null, "OrderBy");

                xs.startTag(null, "PageIndex");
                xs.attribute("","DataType","Int32");// xs.attribute 一定要在xs.text 的上面否則就報錯
                xs.text(list.get(0).getPageIndex()+"");
                xs.endTag(null, "PageIndex");

                xs.startTag(null, "PageSize");
            xs.attribute("","DataType","Int32");
            xs.text(list.get(0).getPageSize()+"");
                xs.endTag(null, "PageSize");

                xs.endTag(null, "SubModelNode");
//            }/////////////////////

            xs.endTag(null, "Root");
            xs.endDocument();
            tv_text.setText(fos.toString());
            fos.close();
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IllegalArgumentException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IllegalStateException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }

}

寫進去,在讀出來,參考http://www.tuicool.com/articles/A7BNz2i

第二種:只是把物件轉成了 xml格式,並不寫在檔案裡

package com.example.hasee.myxml;

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

import com.thoughtworks.xstream.XStream;

/**
 * 建立日期:${date} ${time}
 * 專案名稱:${project_name}
 *
 * @author Jiang Shan Shan
 * @version 1.0
 * @since JDK 1.7.0_79
 * 檔名稱: ${file_name}
 * 類說明:
 */
public class MainActivity2 extends Activity{

    private TextView tv_text;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        tv_text = (TextView)findViewById(R.id.tv_text);

        AppuserManager ap = new AppuserManager("appuser", "*", "ID=1",
                "updatetime desc", 0, 0);

        /*//把物件轉化為 XML
        XStream xstream1 = new XStream();
        String string = xstream1.toXML( ap ) ;
        System.out.println( "sss"+ string );
        tv_text.setText(string);*/

        //把物件轉化為 XML,並且設定別名
        XStream xstream2 = new XStream();
        xstream2.alias( "Root" , AppuserManager.class) ;   //修改別名
        String string2 = xstream2.toXML( ap ) ;//把最外層 標籤com.example.hasee.myxml 改成Root
        System.out.println(  string2 );
        tv_text.setText(string2);

    }
}

第二種方法基於工具類,網上可以下載  xstream-1.4.7.jar 檔案。。。。

第三種方法

工具類

 /**
     *
     * @return 生成的xml檔案的字串表示
     */
    public String produceXml(ArrayList<TableManager> list, String attr_modelName){

        StringWriter stringWriter = new StringWriter();

        try {
            // 獲取XmlSerializer物件
            XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
            XmlSerializer xmlSerializer = factory.newSerializer();
            // 設定輸出流物件
            xmlSerializer.setOutput(stringWriter);

            xmlSerializer.startDocument("utf-8", true);
            xmlSerializer.startTag(null, "Root");
            for(int i=0;i<list.size();i++){


                xmlSerializer.startTag(null, "SubModelNode");
                xmlSerializer.attribute("","ModelName",attr_modelName);


                xmlSerializer.startTag(null, "TableName");
                xmlSerializer.attribute("","DataType","String");
                xmlSerializer.text(list.get(i).getTableName());
                xmlSerializer.endTag(null, "TableName");

                xmlSerializer.startTag(null, "Fields");
                xmlSerializer.attribute("","DataType","String");
                xmlSerializer.text(list.get(i).getFields());
                xmlSerializer.endTag(null, "Fields");

                xmlSerializer.startTag(null, "Where");
                xmlSerializer.attribute("","DataType","String");
                xmlSerializer.text((list.get(i).getWhere()));
                xmlSerializer.endTag(null, "Where");

                xmlSerializer.startTag(null, "OrderBy");
                xmlSerializer.attribute("","DataType","String");
                xmlSerializer.text((list.get(i).getOrderBy()));
                xmlSerializer.endTag(null, "OrderBy");

                xmlSerializer.startTag(null, "PageIndex");
                xmlSerializer.attribute("","DataType","Int32");// xs.attribute 一定要在xs.text 的上面否則就報錯
                xmlSerializer.text((list.get(i).getPageIndex()+""));
                xmlSerializer.endTag(null, "PageIndex");

                xmlSerializer.startTag(null, "PageSize");
                xmlSerializer.attribute("","DataType","Int32");
                xmlSerializer.text((list.get(i).getPageSize()+""));
                xmlSerializer.endTag(null, "PageSize");

                xmlSerializer.endTag(null, "SubModelNode");
            }
            xmlSerializer.endTag(null, "Root");
            xmlSerializer.endDocument();
        } catch (Exception e) {
            e.printStackTrace();
        }

        return stringWriter.toString();

    }

實體類

package com.aeckj.health.bean;
/**
 * 建立日期:2017/03/29 14:56
 * @author Jiang Shan Shan
 * @version 1.0
 * @since JDK 1.7.0_79
 * 檔名稱: TableManager.java
 * 類說明:對所有的表進行增刪改查的操作
*/
public class TableManager {
private String tableName;
    private String fields;
    private String where;
    private String orderBy;
    private int pageIndex;
    private int pageSize;
    public TableManager(String tableName, String fields, String where, String orderBy, int pageIndex, int pageSize) {
this.tableName = tableName;
        this.fields = fields;
        this.where = where;
        this.orderBy = orderBy;
        this.pageIndex = pageIndex;
        this.pageSize = pageSize;
}
public String getTableName() {
return tableName;
}
public void setTableName(String tableName) {
this.tableName = tableName;
}
public String getFields() {
return fields;
}
public void setFields(String fields) {
this.fields = fields;
}
public String getWhere() {
return where;
}
public void setWhere(String where) {
this.where = where;
}
public String getOrderBy() {
return orderBy;
}
public void setOrderBy(String orderBy) {
this.orderBy = orderBy;
}
public int getPageIndex() {
return pageIndex;
}
public void setPageIndex(int pageIndex) {
this.pageIndex = pageIndex;
}
public int getPageSize() {
return pageSize;
}
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
}

此方法的應用

ArrayList<TableManager> list = new ArrayList<TableManager>();
TableManager ap = new TableManager("appuser", "*", "ID=1",
        "updatetime desc", 0, 0);
TableManager ap1 = new TableManager("apimanage", "*", "ID=1",
        "updatetime desc", 0, 0);
list.add(ap);
list.add(ap1);
XmlUtils xu = new XmlUtils();
String s = xu.produceXml(list,"AppUser_mod");

相關推薦

物件xml並且序列xmlandroid

第一種在本地生成AppuserManager.xml檔案,並且把物件轉成了xml格式package com.example.hasee.myxml; import android.app.Activity; import android.os.Bundle; import

Django——restframeworkserializers序列工具

imp pac framework 創建 目錄 virt 化工 http 序列化 (1)創建一個django的虛擬環境   cd 到一個空的文件夾   pip install virtualenv   pip install --no--site--packages 項目名

《程式設計基礎》實驗題目2 c檔案讀取序列 連結串列排序

題目:   每個學生的資訊卡片包括學號、姓名和成績三項。定義儲存學生資訊的單向連結串列的結點型別;編寫函 數,由檔案依次讀入 n(n≥0)個學生的資訊,建立一個用於管理學生資訊的單向連結串列;編寫函式,對 該連結串列進行整理,保證該單向連結串列的結點順序滿足學號從小到大的順序。  演算法的設計與

《程序設計基礎》實驗題目2 c文件讀取序列 鏈表排序

max malloc 哨兵 scan 遞歸 初始化 直接 元素 oid 題目:   每個學生的信息卡片包括學號、姓名和成績三項。定義存儲學生信息的單向鏈表的結點類型;編寫函 數,由文件依次讀入 n(n≥0)個學生的信息,創建一個用於管理學生信息的單向鏈表;編寫函數,對 該鏈

Android探索之旅第十四篇Android實現炫酷效果的Demo持續收錄......

浪起來!使用 drawBitmapMesh 實現模擬水波紋效果 簡書傳送門 三十秒實現QQ首頁動畫特效 BMoveView為RadioGroup新增移動的特

java把物件化成流,和把流轉化成物件包含clone機制+序列機制

類如下,這裡為了測試 僅僅用了內部類class Book implements Serializable { int i = 1; }物件轉化成位元組Book b = new Book(); B

Lua裡實現將table字串(序列)和將字串轉換回table序列

--[[ file name : table序列化和反序列化的問題.lua author : Clark/陳澤丹 created : 2011-12-22 備註: 支援table的遞迴結構,但資料型別不支援function屬性(因為fu

xml 解析物件物件xml

此筆記留作備用,被解析的物件需要新增 @XmlRootElement 註解 xml 解析成bean import javax.xml.bind.JAXBContext; import javax.xml.bind.JAXBException; import javax.xml.bi

Kitti資料集VOCxml資料集格式

本文將kitti資料集中的檢測部分的資料標註轉換成voc格式的xml,用於生成caffe-ssd訓練的lmdb資料,具體資料集自己下載,標註圖片大概七千多張。 kitti格式標註及圖片轉voc格式標註及圖片(主要是扣掉了dontcare部分), 具體程式碼如下: #!/usr/bin

Java IO詳解六)------序列與反序列物件

1、什麼是序列化與反序列化? 序列化:指把堆記憶體中的 Java 物件資料,通過某種方式把物件儲存到磁碟檔案中或者傳遞給其他網路節點(在網路上傳輸)。這個過程稱為序列化。通俗來說就是將資料結構或物件轉換成二進位制串的過程   反序列化:把磁碟檔案中

用Jersey構建RESTful服務-JAVA物件XML/Json輸出

1、XML資料型別輸出: 一、 總體說明 XML和JSON 是最為常用的資料交換格式。本例子演示如何將java物件,轉成XML輸出。 二、流程 1.在上文的例子中,建立一個包“com.waylau.rest.bean” 2.在該包下建立一個JAVA類"User"

實現 序列引擎支援 JDK預設、Hessian、Json、Protostuff、Xml、Avro、ProtocolBuffer、Thrift等序列方式

本文將實現一個包含JDK預設、Hessian、Json、Protostuff、Xml、Avro、ProtocolBuffer、Thrift等序列化方式的序列化引擎。使用者可以提供使用 SerializerEngine 方便快捷地切換序列化方法實現。 文章目錄

android之XmlSerializer序列XML寫入

      首先,我們看一下什麼是serializer,serializer就是序列化,又名序列化。它可並不只是簡單的把物件儲存在儲存器上,它可以使我們在流中傳輸物件,使物件變的可以像基本資料一樣傳遞。 最終效果圖如上 現在貼上主要程式碼: main.xml<?xml

Android學習記錄1AndroidXML檔案的序列生成與解析

xml檔案是非常常用的,在android中json和xml是非常常用的兩種封裝資料的形式,從伺服器中獲取資料也經常是這兩種形式的,所以學會生成和解析xml和json是非常有用的,json相對來說是比較簡單的,咱不做介紹了,這裡給大家講一下xml的序列化生成和解析。不廢話了,

序列及反序列XML物件,List IEnumerator

專案需要反序列化List生成的類,度了N多方法後,發現這個方法可用。 [Serializable]//宣告該物件可以被序列化     public class taobaoDeserialDetial     {        [XmlElement("adjust_fee

用Jersey構建RESTful服務2--JAVA物件XML輸出

一、 總體說明 XML和JSON 是最為常用的資料交換格式。本例子演示如何將java物件,轉成XML輸出。 二、流程 1.在上文的例子中,建立一個包“com.waylau.rest.bean” 2.在該包下建立一個JAVA類"User" package com.

Xml序列當泛型不同時序列序列為不同的Xml節點名稱

在我們提供介面服務給第三方呼叫時,一般會採用Request/Response模式,即請求與響應都採用統一的外部封裝,真正的業務資料則由Request/Resonse的某個引數比如Data之類的類進行承擔,以Request為例,該請求類假設定義成如下內容: /// <

記錄一次錯誤處理 xml序列和反序列相關

vfl last events all 長度 pat vid pac ria XML序列化後,反序列化時出現錯誤 報錯現象 System.InvalidOperationException: XML 文檔(40, 11)中有錯誤。 ---> System.Xml.X

Java核心類庫-IO-對象流實現序列與反序列

.get throws 反序 code row cts new java cep 使用對象流來完成序列化和反序列化操作:   ObjectOutputStream:通過writeObject()方法做序列化操作的   ObjectInputStream:通過readObje

GO語言的json輸入序列之interfac{}存儲

sha hand ace ring mar import float code slice // code_032_json_unmarshal_to_interface project main.go package main import ( "encodin