XML中二进制数据的处理方法

在xml中,所有的数据都是以文本的形式来显示,但是二进制数据不能直接以文本格式来表示,那xml又是怎么处理二进制数据的呢?下面就来探讨一下。

为了简单和通用性,xml被设计成了以文本的格式来表示数据。在xml中,所有的数据都是以文本的格式来存储,二进制数据也不例外。在xml中,二进制数据也要被编码成文本的格式,发送到目的方。目的方接收到这个文本二进制数据以后,再以相同的解码程序解成相应的二进制数据,当然数据原来的格式,名称等辅助信息一定要当作相关信息一起发送。一般二进制数据编码成BASE64格式,它的优点是容易易于编码和解码,缺点是比纯的二进制多占用33%的存储空间。

下面是具体的程序实现:

String ret=new String();

try

{

InputStream in=new FileInputStream("c:\\aaa.doc");

byte[] bytes=new byte[in.available()];

in.read(bytes);

ret=new sun.misc.BASE64Encoder().encode(bytes); //具体的编码方法

in.close();

}

catch(FileNotFoundException e)

{

e.printStackTrace();

}

catch(java.io.IOException ex)

{

ex.printStackTrace();

}

%>

ret就是最后的结果,编码以后就可以用标准的xml方式发送了。发送到目的方以后,还要对数据进行相应的解码,才能得到原来的二进制文件,解码的代码如下:

byte[] bytes = new sun.misc.BASE64Decoder().decodeBuffer(ret);

java.io.ByteArrayInputStream inStream=new java.io.ByteArrayInputStream(bytes);

byte[]  buffer =new  byte[1444];

FileOutputStream fs=new FileOutputStream( "d:\\aaa.doc");

int bytesum=0;

int byteread=0;

while ((byteread=inStream.read(buffer))!=-1)

{

bytesum+=byteread;

fs.write(buffer,0,byteread);

}

%>

BASE64可以处理不太大的数据,如果要移动大量的数据,且要考虑空间/时间效率时,要采用其他的替代方法。

黑白琴键http://www.cnblogs.com/jebit/articles/8252.aspxSat, 01 May 2004 21:28:00 GMThttp://www.cnblogs.com/jebit/articles/8252.aspxhttp://www.cnblogs.com/jebit/comments/8252.aspxhttp://www.cnblogs.com/jebit/articles/8252.aspx#Feedback0http://www.cnblogs.com/jebit/comments/commentRss/8252.aspxhttp://www.cnblogs.com/jebit/services/trackbacks/8252.aspx CSDN - 文档中心 - Java

java xml二进制流传输_XML中二进制数据的处理方法相关推荐

  1. hubbledotnet 远程连接提示:无法从传输连接中读取数据:远程主机强迫关闭一个现有的连接...

    我用本地hubbledotnet(安装32位)去连接服务器hubbledotnet(64位) 提示:无法从传输连接中读取数据:远程主机强迫关闭一个现有的连接 ...

  2. 分布式存储系统中的数据高效缓存方法

    点击上方蓝字关注我们 分布式存储系统中的数据高效缓存方法 杨青霖, 吴桂勇, 张广艳 清华大学计算机科学与技术系,北京 100084 摘要:针对典型分布式存储系统存在的写放大.I/O路径过长.响应时延 ...

  3. oracle数据库速度测试,【原创】验证在Oracle数据库中操纵数据的各种方法的速度...

    机器配置:组装的PC SERVER,4AMD CPU,8G内存,4块SCSI硬盘.Oracle 10.2.0.4. 试验目的:在244上,对xxx_flow表进行复制.更新,验证在Oracle数据库中 ...

  4. java代码二进制转为十六进制_Java 中二进制转换成十六进制的两种实现方法

    Java 中二进制转换成十六进制的两种实现方法 每个字节转成16进制,方法1 /** * 每个字节转成16进制,方法1 * * @param result */ private static Stri ...

  5. .net WebApi 批量文件进行压缩zip以二进制流传输至前端(Vue)下载

    前言:最近接了个项目,需要进行将服务端生成的文件进行打包压缩供前端下载,百度查了下资料,决定采用SharpZipLib C#开园的压缩解压库进行服务器文件压缩,在实现过程,郁闷的是前端接收下载下来的压 ...

  6. java xml 读取库_Java开发中读取XML与properties配置文件的方法

    相关阅读: 1. XML文件: 什么是XML?XML一般是指可扩展标记语言,标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言. 2.XML文件的优点: 1)XML文档内容和结构完 ...

  7. 计算机中数的存储和处理都使用二进制对吗,计算机中的数据可分为两种类型:数字和字符,它们最终都要转换为二进制代码进行存储和处理。对于人们习惯的十进制数字,通常用____进行转换。...

    计算机中的数据可分为两种类型:数字和字符,它们最终都要转换为二进制代码进行存储和处理.对于人们习惯的十进制数字,通常用____进行转换. 更多相关问题 [单选] 电力线路巡视检查周期,定期巡视每月至少 ...

  8. Stream流、FiLe和IO流、IO流(字节流-拷贝文件_和_字符流-读取文本中的数据写入文本文件中)9-10-11

    package com.streamdemo; import java.util.ArrayList; import java.util.List; /*** 体验Stream流** 创建一个集合,存 ...

  9. word录入表单数据 java 导入系统,java导入excel | 怎么把excel中的数据批量导入到word中的表格中...

    用javascript怎么实现把excel中的数据批量导入到数据库表中 这个js不能直接实现吧 我们程序用到 先读取excel内容转换成数组 然后放到页面上 再提交表单 储存 MySql如何批量添加数 ...

最新文章

  1. 【CVPR2020】30篇最新论文抢先看!!!
  2. HDU 4686 Arc of Dream(递归矩阵加速)
  3. Python 获取父级文件夹的名字
  4. php项目打不开DNS,电脑无法打开网页显示错误代码dns_probe_possible怎么解决?
  5. 延时摄影制作软件——GlueMotion for Mac支持m1
  6. Slob分配器的数据结构和分配逻辑
  7. Kettle下载和安装
  8. 51单片机入门教程(2)——流水灯的实现
  9. python创意网络爬虫_Python网络爬虫(一)
  10. 儿童手工制作日历_日历的手工制作教程图解
  11. 有功功率和无功功率的超前滞后
  12. 在creo中,如何在轴上画一个键槽?
  13. iPhone在线音乐盒,代码开源
  14. matlab图像处理学习笔记
  15. 2018 滴滴出行校招笔试(单词纠错)
  16. IDEA 的Diagrams查看类图关系很 乱,一键自动布局
  17. IT十年人生过客-二十一-忙碌和非凡的一年(上)
  18. java模糊查询、自动补全的实现
  19. 【绘制】HTML5 Canvas 中渐变色和图案(图文、示例)
  20. 部分准备金银行已经过时

热门文章

  1. csh shell_一篇文章从了解到入门shell
  2. 2017.10.17 CF#441 F题 思考记录
  3. [C++] Value Categories
  4. 【Python】理解Python(1) - Python数据模型,is关键字,类型
  5. 【Python】【Python库】Python3.7.2 - 字符串str类 (2)
  6. Intel 64/x86_64/IA-32/x86处理器 - SIMD指令集 - MMX技术(5) - 逻辑指令
  7. python函数式编程思想_python函数式编程
  8. js对象赋值只保留存在的属性_js对象的创建对象模式和继承模式(上)---构建对象模式...
  9. UE3 渲染线程的分析及优化
  10. UE3 移动设备主页