将一个图片以二进制值的形式存入Xml文档中

来源:互联网 发布:万达电商 玩数据百家 编辑:程序博客网 时间:2024/05/21 17:19

二进制编码

 
有少量的方法可以让你将二进制的数据编码为文本数据。基本上,这个处理使用一个相对简单的算法将二进制数据修改为ASCII字节。两个最流行的二进制编码算法是Uuencode和base64编码。 
二进制编码的一个称为MIME的扩展版本用来添加文件的编码信息(例如文件名)。编码程序很容易得到,一般是作为共享软件和编程工具。下面是将一个二进制编码的文件嵌入XML文档的例子: 

<Product>
  <SKU>99238</SKU>
  <Description>Super Gidgetidoo</Description>
  <Picture>
Content-Description: File encoded with ENCODE64.EXE.
Content-Disposition: attachment; filename="foo.zip"
Content-Transfer-Encoding: BASE64
Content-Type: application/octet-stream

UEsDBBQAAAAIAGtaMS2/u6RnIAAAAIYAAAAKAAAAYm
l0bWFwLmJtcHPybWOAADMg1gBiVihm
ZJAAiwcA8RE+CIaB/6iAYj4AUEsBAhQAFAAAAAgAa1oxLb+7
pGcgAAAAhgAAAAoAAAAAAAAA
AAAgALaBAAAAAGJpdG1hcC5ibXBQSwUGAAAAAA
EAAQA4AAAASAAAAAAA
  </Picture>
</Product>


例:


try
   {
    int readbyte = 0;        //
    int bytestoread = 100;       //数据缓冲区大小
    string filename = "../../writexml.xml";   //要打开的文档
    //   this.textbox1.text = string.empty;           

    // 打开图片文档,利用该图片构造一个文档流
    filestream fs = new filestream("../../001.jpg",filemode.open);
    // 使用文档流构造一个二进制读取器将基元数据读作二进制值
    binaryreader br = new binaryreader(fs);


    xmltextwriter xmltxtwt = new xmltextwriter(filename,encoding.utf8);
    //输出配置 代码缩进
    xmltxtwt.formatting = formatting.indented;
    //   xmltxtwt.indentation = 4;

    //书写声明
    xmltxtwt.writestartdocument();
    xmltxtwt.writestartelement("picture","contactdetails","http://www.deltabis.com/contact");//定义命名空间
    xmltxtwt.writestartelement("image");            //定义节点
    xmltxtwt.writeattributestring("imagename","002.jpg");        //添加图片属性

    byte[] base64buffer = new byte[bytestoread];          //开辟缓冲区
    do
    {
     readbyte = br.read(base64buffer,0,bytestoread);      //将数据读入字节数组
     xmltxtwt.writebase64(base64buffer,0,readbyte);       //将数组中二进制值编码为base64并写出到xml文档

    }while(bytestoread <= readbyte);


    xmltxtwt.writeendelement();
    xmltxtwt.writeendelement();
    xmltxtwt.writeenddocument();


//    xmltxtwt.flush();
    xmltxtwt.close();

    messagebox.show("读写结束!");

    //   this.textbox1.text = readxml(filename);
   }
   catch(exception ex)
   {
    messagebox.show(ex.tostring());
   }

原创粉丝点击