物件轉成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(並且序列化xml)在android中
第一種在本地生成AppuserManager.xml檔案,並且把物件轉成了xml格式package com.example.hasee.myxml; import android.app.Activity; import android.os.Bundle; import
Django——restframework(serializers序列化工具)
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資料集轉成VOC(xml)資料集格式
本文將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學習記錄(1)—Android中XML檔案的序列化生成與解析
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