<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;
        }
        

    }
     
    圖片操作類(將圖片轉換為字節流進行存儲并讀?。?/span>
    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 閱讀(555) 評論(0)  編輯  收藏 所屬分類: ★開發經驗

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

    導航

    統計

    公告

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

    隨筆分類(19)

    文章檔案(1)

    博主鏈接

    最新評論

    閱讀排行榜

    主站蜘蛛池模板: 岛国片在线免费观看| 免费无码VA一区二区三区| 成人永久免费高清| 国产亚洲sss在线播放| 欧美好看的免费电影在线观看| 亚洲制服丝袜第一页| 在线观看AV片永久免费| 国产成人亚洲合集青青草原精品| 可以免费看黄视频的网站| 最新国产成人亚洲精品影院| 成人黄18免费视频| 欧美亚洲国产SUV| 青青青国产色视频在线观看国产亚洲欧洲国产综合 | 亚洲精品人成电影网| 又粗又大又黑又长的免费视频| 亚洲人成图片网站| 四只虎免费永久观看| 在线播放国产不卡免费视频 | 亚洲免费在线播放| 亚洲精品午夜久久久伊人| 女人张腿给男人桶视频免费版| 日韩精品亚洲专区在线影视| 日韩精品亚洲aⅴ在线影院| 成人精品一区二区三区不卡免费看| 亚洲2022国产成人精品无码区| 国产精品视频免费| 菠萝菠萝蜜在线免费视频| 亚洲成a人片在线观看无码专区| 亚洲黄色免费观看| 久久精品国产亚洲AV天海翼| 亚洲线精品一区二区三区| 国产精品成人免费福利| 偷自拍亚洲视频在线观看| 亚洲AV一宅男色影视| 青青青青青青久久久免费观看| 国产精品永久免费视频| 亚洲毛片在线免费观看| 亚洲精品无码成人片在线观看 | 久久精品免费电影| 亚洲色大成WWW亚洲女子| 亚洲一区二区三区偷拍女厕|