<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    xstream 讀寫對象(圖片)到xml

    做對象的序列化,到Xml的讀寫解決方法:
       
            利用開源工具xstream進行對象的序列化到xml的讀寫,下面的項目主要是:針對一個含有圖片的對象的到xml的讀寫操作。

    項目結構及所需jar包:
                  

    實體類編寫:
    import com.thoughtworks.xstream.annotations.XStreamAlias;
    import com.thoughtworks.xstream.annotations.XStreamAsAttribute;

    @XStreamAlias("Preparation")
    public class Preparation {
        @XStreamAsAttribute
        public String preparationText;

        @XStreamAsAttribute
        public String preparationType;

        @XStreamAsAttribute
        public String questionText;
        
        @XStreamAsAttribute
        public String questionAnswer;
        
        @XStreamAsAttribute
        public String preparationImage;
        
        @XStreamAsAttribute
        public String responseable;

        public String getPreparationText() {
            return preparationText;
        }

        public void setPreparationText(String preparationText) {
            this.preparationText = preparationText;
        }

        public String getPreparationType() {
            return preparationType;
        }

        public void setPreparationType(String preparationType) {
            this.preparationType = preparationType;
        }

        public String getQuestionText() {
            return questionText;
        }

        public void setQuestionText(String questionText) {
            this.questionText = questionText;
        }

        public String getQuestionAnswer() {
            return questionAnswer;
        }

        public void setQuestionAnswer(String questionAnswer) {
            this.questionAnswer = questionAnswer;
        }

        public String getPreparationImage() {
            return preparationImage;
        }

        public void setPreparationImage(String preparationImage) {
            this.preparationImage = preparationImage;
        }

        public String getResponseable() {
            return responseable;
        }

        public void setResponseable(String responseable) {
            this.responseable = responseable;
        }

        @Override
        public String toString() {
            // TODO Auto-generated method stub
            return preparationText+";"+preparationImage;
        }
        

    }
     
    圖片操作類(將圖片轉換為字節流進行存儲并讀取)
    package cn.mccn.com.test;
    import java.io.BufferedInputStream;
    import java.io.BufferedOutputStream;
    import java.io.DataOutputStream;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;

    import sun.misc.BASE64Decoder;
    import sun.misc.BASE64Encoder;

    public class Image {
        /*
         * 輸入流,讀取圖片或者Txt文件的字節碼
         
    */
        @SuppressWarnings("finally")
        public static String getRimg(String file1) {
            StringBuilder builder = new StringBuilder(1000000);
            byte[] bytes = null;
            try {
                new File(file1).createNewFile();
                FileInputStream in = new FileInputStream(file1);
                BufferedInputStream bis = new BufferedInputStream(in);
                bytes = new byte[bis.available()];
                bis.read(bytes);
                bis.close();

            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                return new BASE64Encoder().encodeBuffer(bytes);
            }
        }
        /*
         * 輸出流,根據輸入流傳遞的字節碼生成圖片或者txt等文件
         
    */
        public static void getWimg(String content, String file2) {
            try {
                FileOutputStream out = new FileOutputStream(file2);
                BufferedOutputStream bos = new BufferedOutputStream(out);
                DataOutputStream dos = new DataOutputStream(bos);
                byte[] bs = new BASE64Decoder().decodeBuffer(content);
                dos.write(bs);
                dos.flush();
                dos.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
     
    }

    xml操作工具類(主要進行xml格式定制,讀寫xml)

    package cn.mccn.com.test;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.io.InputStream;
    import java.util.List;
    import com.thoughtworks.xstream.XStream;
    import com.thoughtworks.xstream.io.xml.DomDriver;
    import cn.mccn.com.bean.*;
    public class Util {
        
        /** 定制Xml格式和屬性標簽*/
        private static XStream setXStream(XStream stream) {
     
         //   stream.alias("Page", Page.class);
            
            stream.alias("Preparation", Preparation.class);
            stream.aliasAttribute(Preparation.class, "preparationText", "preparationText");
            stream.aliasAttribute(Preparation.class, "preparationType", "preparationType");
            stream.aliasAttribute(Preparation.class, "questionText", "questionText");
            stream.aliasAttribute(Preparation.class, "questionAnswer", "questionAnswer");
            stream.aliasAttribute(Preparation.class, "responseable", "responseable");
            stream.aliasField("preparationImage", Preparation.class, "preparationImage");
            
            return stream;
     
        }
        
        /* * 根據定制創建Xml 文件 */
        public static String makeXML(List list) {
            
            XStream stream = new XStream();
            stream = setXStream(stream);
            System.out.println(stream.toString());
            String str = stream.toXML(list);
            System.out.println(str.toString());
            return str;
     
        }
        
        /* * 將對象根據定制產生的內容寫入Xml 文件 */
        public static void writeXML(String s) {
     
            FileWriter fw = null;    
            String str="<?xml version='1.0' encoding='UTF-8'?>"+s;
            try {
                fw = new FileWriter("e:/testXtram.xml");
                fw.write(str, 0, str.length());
                fw.flush();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
     
        /** xstream方式解析Xml*/
        public static List readXML2(InputStream inputStream) {
     
            XStream stream = new XStream(new DomDriver());
            stream = setXStream(stream);
            return (List) stream.fromXML(inputStream);
            
        }
    }

    Main方法類(進行讀寫對象到xml的測試) 
    package cn.mccn.com.test; 

    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.InputStream;
    import java.util.ArrayList;
    import java.util.List;
    import cn.mccn.com.bean.*;
    public class Main {
        public static void insertXml(List list) {   
            List preparations=new ArrayList();  
            for (int i = 0; i < list.size(); i++) { 
                Preparation preparation=new Preparation();
                preparation=(Preparation)list.get(i);
                String file1 =preparation.getPreparationImage();
                String content = Image.getRimg(file1);
                preparation.setPreparationImage(content.toString()); 
                preparations.add(preparation);                      
            }

            Util.writeXML(Util.makeXML(preparations));
            System.out.println(Util.makeXML(preparations).toString());
        }

        public static List  exportXml(String file,String file2) {
            File f2 = new File(file);
              List list=new ArrayList();
              List list1=new ArrayList();
            try {
                InputStream in = new FileInputStream(f2);
                list = Util.readXML2(in);
                for (int i = 0; i < list.size(); i++) {
                    Preparation preparation = (Preparation) list.get(i);
                    String content = preparation.getPreparationImage();
                    Image.getWimg(content.trim(), file2+"1"+i+".jpg");
                    preparation.setPreparationImage(file2+"1"+i+".jpg");
                    list1.add(preparation);
                }
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            }
            return list1;
        }
        
         public static void main(String[]args){
             Preparation preparation=new Preparation();
             preparation.setQuestionText("張濤");
             preparation.setPreparationType("0");
             preparation.setPreparationText("0");
             preparation.setPreparationImage("e:/0.jpg");
             preparation.setQuestionAnswer("0");
             preparation.setResponseable("0");
             List list=new ArrayList();
             
            // list.add(preparation);
            
    // insertXml(list);
             
             list= exportXml("e:/testXtram.xml", "f:/");
             System.out.println(list.size()+";"+list.get(0).toString());
         }
    }

    posted on 2012-09-10 18:33 Nirvana reborn 閱讀(553) 評論(0)  編輯  收藏 所屬分類: ★開發經驗

    <2012年9月>
    2627282930311
    2345678
    9101112131415
    16171819202122
    23242526272829
    30123456

    導航

    統計

    公告

    我好喜歡它,
    我的 QQ 66013804
    我想做技術流,可是我很懶,
    博客新地址:<a href="

    隨筆分類(19)

    文章檔案(1)

    博主鏈接

    最新評論

    閱讀排行榜

    主站蜘蛛池模板: 国产一区二区视频免费| 日本XXX黄区免费看| 亚洲 综合 国产 欧洲 丝袜| 亚洲成_人网站图片| 18禁无遮挡无码网站免费| 亚洲日本天堂在线| 狼友av永久网站免费观看| 亚洲Av永久无码精品黑人| 国产一区二区三区无码免费| 成人婷婷网色偷偷亚洲男人的天堂 | 免费在线观看自拍性爱视频| 无码不卡亚洲成?人片| 九九久久精品国产免费看小说 | 免费人成在线观看69式小视频| 精品亚洲A∨无码一区二区三区| 999任你躁在线精品免费不卡| 亚洲福利电影在线观看| 一二三四在线播放免费观看中文版视频| 亚洲人成www在线播放| 日本免费人成视频播放| 有码人妻在线免费看片| 久久精品国产亚洲网站| 88av免费观看入口在线| 亚洲色成人网站WWW永久四虎| 亚洲国产人成精品| 亚洲精品免费观看| 亚洲成a人片在线观看天堂无码| 亚洲XX00视频| 91精品国产免费久久国语麻豆| 亚洲午夜一区二区三区| 亚洲精品NV久久久久久久久久| 国产婷婷成人久久Av免费高清 | 国产亚洲精品精华液| 波多野结衣中文字幕免费视频 | 国产精品亚洲综合一区在线观看 | 一级**爱片免费视频| 久久精品国产亚洲av日韩| 日韩中文字幕在线免费观看| 久久久免费观成人影院| 亚洲人成7777| 亚洲精品无码精品mV在线观看|