通過正則表達取出xml屬性中的字符串,並轉換爲圖片

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;

import sun.misc.BASE64Decoder;

/**
 * 從xml中的屬性中取出圖片
 *
 * @author 艾客
 *
 * jdom、dom4j從xml中的節點的屬性中獲取base64轉換的後的字符串有問題(備註:如果這個特殊的字符串在節點下【eg:<t>經過base64編碼的圖片字符串</t>】,獲取節點的text值在轉圖片,則正常)
 */
public class ConvertImage {

 public static void main(String[] args) throws Exception, IOException {
  String string = inputStream2String(new FileInputStream("d:\\a.xml"));

  // 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("===========================");

  BASE64Decoder decoder = new BASE64Decoder();
  byte[] data = decoder.decodeBuffer(img);
  FileOutputStream os = new FileOutputStream("D:\\001.jpg");
  os.write(data);
  os.flush();
  os.close();

 }

 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;
  }

  return sb.toString();
 }
}
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章