import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.regex.Matcher;
import java.util.regex.Pattern;java
import sun.misc.BASE64Decoder;app
/**
* 從xml中的屬性中取出圖片
*
* @author 艾客
*
* jdom、dom4j從xml中的節點的屬性中獲取base64轉換的後的字符串有問題(備註:若是這個特殊的字符串在節點下【eg:<t>通過base64編碼的圖片字符串</t>】,獲取節點的text值在轉圖片,則正常)
*/
public class ConvertImage {dom
public static void main(String[] args) throws Exception, IOException {
String string = inputStream2String(new FileInputStream("d:\\a.xml"));ide
// Pattern p = Pattern.compile("PK_EventId=\"(.*?)\"");
//Pattern p = Pattern.compile("PRINTENTITY=\"([^.]*)\"");//匹配非換行符
Pattern p = Pattern.compile("PRINTENTITY=\"([\\s\\S]*)\"");//\s\S 匹配任何空白字符+匹配任何非空白字符
//Pattern p = Pattern.compile("PRINTENTITY=[\"\']([\\s\\S]*)[\"\']");
Matcher m = p.matcher(string);編碼
String img = "";
System.out.println("===========================");
while (m.find()) {
img = m.group(1);
System.out.println(img);
}
System.out.println("===========================");code
BASE64Decoder decoder = new BASE64Decoder();
byte[] data = decoder.decodeBuffer(img);
FileOutputStream os = new FileOutputStream("D:\\001.jpg");
os.write(data);
os.flush();
os.close();xml
}圖片
public static String inputStream2String(InputStream inStream) throws IOException {
String lineSeparator = System.getProperty("line.separator");字符串
StringBuffer sb = new StringBuffer();
BufferedReader bufferReader = new BufferedReader(new InputStreamReader(inStream, "UTF-8"));
String str = null;
while ((str = bufferReader.readLine()) != null) {
sb.append(str + lineSeparator);
}
if (null == sb || sb.length() == 0) {
return null;
}get
return sb.toString(); } }