您的位置:首页 > 编程语言 > Java开发

用Base64对JAVA对象进行转码

2016-05-11 08:53 459 查看
** 

 * xml传递<a href="http://lib.csdn.net/base/17" class='replace_word' title="Java EE知识库" target='_blank' style='color:#df3434; font-weight:bold;'>Java</a>对象字节流 

 */  

      try {  

          //初始化Java对象  

          Message msg = new Message();  

          msg.setStatus(Message.HELLO);  

          msg.setMessage("come from china!");  

          //序列化对象  

          ByteArrayOutputStream bOut = new ByteArrayOutputStream();  

          ObjectOutputStream objOut = new ObjectOutputStream(bOut);  

          objOut.writeObject(msg);  

          //base64 encode  

          BASE64Encoder encode = new BASE64Encoder();  

          String xmlStr = encode.encode(bOut.toByteArray());  

          //xml file string  

          StringBuffer xmlFile = new StringBuffer();  

          xmlFile.append("<?xml version=/"1.0/" encoding=/"UTF-8/"?>")  

          .append("<rule>")  

          .append("<obj>"+xmlStr+"</obj>")  

          .append("</rule>");  

          System.out.println("xml: "+xmlFile.toString());  

          //parse xml  

          DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();  

          DocumentBuilder builder = factory.newDocumentBuilder();  

          Document doc = builder.parse(new ByteArrayInputStream(xmlFile.toString().getBytes()));  

          Element root = (Element) doc.getElementsByTagName("obj").item(0);  

          String xmlNode = root.getFirstChild().getNodeValue();  

          //base64 decode  

          BASE64Decoder decode = new BASE64Decoder();  

          byte[] objBytes = decode.decodeBuffer(xmlNode);  

          //反序列化  

          ByteArrayInputStream bIn = new ByteArrayInputStream(objBytes);  

          ObjectInputStream objIn = new ObjectInputStream(bIn);  

          Object obj = objIn.readObject();  

          if(obj != null){  

             if (obj instanceof Message) {  

                 Message m = (Message)obj;  

                 System.out.println("Status: "+m.getStatus());  

                 System.out.println(m.getMessage());  

             }  

          }  

            

      } catch (Exception e) {  

          e.printStackTrace();  

      }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: