Java开发网 Java开发网
注册 | 登录 | 帮助 | 搜索 | 排行榜 | 发帖统计  

您没有登录

» Java开发网 » WebService/XML/JSON/SOAP/SOA  

按打印兼容模式打印这个话题 打印话题    把这个话题寄给朋友 寄给朋友    该主题的所有更新都将Email到你的邮箱 订阅主题
flat modethreaded modego to previous topicgo to next topicgo to back
作者 利用JDOM把JPG图象数据写入XML一个简单例子(原创)
jameszhang



CJSDN高级会员


发贴: 1594
积分: 111
于 2003-08-13 10:29 user profilesend a private message to usersearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
代码在JBUILDER上测试过
第一步
首先读取图象文件

public static byte[] getBytesFromFile(File file) throws IOException
{
InputStream is = new FileInputStream(file);
long length = file.length();
if (length > Integer.MAX_VALUE)
{
return null;
}

byte[] bytes = new byte[ (int) length];

int offset = 0;
int numRead = 0;
while (offset < bytes.length
&& (numRead = is.read(bytes, offset, bytes.length - offset)) >= 0)
{
offset += numRead;
}

if (offset < bytes.length)
{
throw new IOException("Could not completely read file " + file.getName());
}

is.close();
return bytes;
}


接下来转换成文本


public String getBinaryFile(java.io.File file)
{
String result = "";
try
{
result = new BASE64Encoder().encode(this.getBytesFromFile(file));
}
catch (Exception exp)
{
JOptionPane.showMessageDialog(this, exp);
return null;
}
return result;
}

利用JDOM来写XML文件


try
{
InputStream is = new FileInputStream(jpgFile);
OutputStream out = new FileOutputStream("E:\\bb.xml");
BufferedInputStream bis = new BufferedInputStream(is);
Element rootElement = new Element("root");
Document myDocument = new Document(rootElement);
rootElement.addContent(new CDATA(this.getBinaryFile(jpgFile)));

XMLOutputter outputter = new XMLOutputter(" ", true);
outputter.output(myDocument, out);
bis.close();
is.close();
out.close();
}
catch (Exception ee)
{
JOptionPane.showMessageDialog(this, "file can't be writed");
return;
}

}


文件生成了,打开bb.xml可以看到BASE64的编码

第二步把bb.xml的数据还原

用JDOM解析bb.xml,读取CDATA对象,通过CDATA对象取得二进制数据,写文件完成。


CDATA cdata ;
try
{
SAXBuilder builder = new SAXBuilder();
Document ad = builder.build(xmlFile);
Element rootElement = ad.getRootElement();
java.util.List list = rootElement.getMixedContent();

java.util.Iterator itr = list.iterator();
FileOutputStream fout = new FileOutputStream("E:\\1.jpg");

while(itr.hasNext())
{
Object o = itr.next();
if (o instanceof CDATA)
{
cdata = (CDATA)o;
fout.write(new sun.misc.BASE64Decoder().decodeBuffer(cdata.getText()));
fout.close();
break;
}

}

}
catch (Exception eep)
{
JOptionPane.showMessageDialog(this, "read xml error");
return;
}


jameszhang edited on 2003-08-13 17:15

"First they ignore u, then they laugh at u, then they fight u, then u will win

Mahatma Gandhi"


话题树型展开
人气 标题 作者 字数 发贴时间
16705 利用JDOM把JPG图象数据写入XML一个简单例子(原创) jameszhang 2627 2003-08-13 10:29
12603 Re:利用JDOM把JPG图象数据写入XML一个简单例子(原创) aibcn 11 2003-10-20 11:33
13023 Re:利用JDOM把JPG图象数据写入XML一个简单例子(原创) floater 144 2004-03-11 00:07
12649 Re:利用JDOM把JPG图象数据写入XML一个简单例子(原创) Julian13 48 2003-10-21 12:26
12394 Re:利用JDOM把JPG图象数据写入XML一个简单例子(原创) redjing 116 2003-12-26 23:22
12377 Re:利用JDOM把JPG图象数据写入XML一个简单例子(原创) jameszhang 52 2003-12-29 09:08
12325 Re:利用JDOM把JPG图象数据写入XML一个简单例子(原创) 牛老板 6 2004-01-07 15:58
12260 Re:利用JDOM把JPG图象数据写入XML一个简单例子(原创) fatsnake 13 2004-01-29 12:05
12399 Re:利用JDOM把JPG图象数据写入XML一个简单例子(原创) richzh 10 2004-02-22 10:53
12231 Re:利用JDOM把JPG图象数据写入XML一个简单例子(原创) jimmywin 6 2004-03-05 20:17
12208 Re:利用JDOM把JPG图象数据写入XML一个简单例子(原创) jfml 53 2004-03-10 16:24

flat modethreaded modego to previous topicgo to next topicgo to back
  已读帖子
  新的帖子
  被删除的帖子
Jump to the top of page

   Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent
Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1
客服电话 18559299278    客服信箱 714923@qq.com    客服QQ 714923