jjava解析excle或者csv文件并导出到web界面:

创建ExcelShower.java

  1. package com.ssm.controller;
  2.  
  3. import java.io.File;
  4. import java.io.IOException;
  5. import java.io.InputStream;
  6. import java.net.HttpURLConnection;
  7. import java.net.URL;
  8. import java.net.URLDecoder;
  9. import java.util.ArrayList;
  10. import java.util.List;
  11.  
  12. import javax.servlet.http.HttpServletRequest;
  13. import javax.servlet.http.HttpServletResponse;
  14. import javax.xml.parsers.DocumentBuilder;
  15. import javax.xml.parsers.DocumentBuilderFactory;
  16.  
  17. import net.sf.json.JSONArray;
  18.  
  19. import org.apache.poi.hssf.usermodel.HSSFWorkbook;
  20. import org.springframework.stereotype.Controller;
  21. import org.springframework.web.bind.annotation.RequestMapping;
  22. import org.w3c.dom.Document;
  23. import org.w3c.dom.Element;
  24. import org.w3c.dom.Node;
  25. import org.w3c.dom.NodeList;
  26.  
  27. import com.pera.taskstat.excelToHtml.CSVFileUtil;
  28. import com.pera.taskstat.excelToHtml.POIReadExcelToHtml03;
  29. /**
  30. *
  31. * @author yeyun
  32. * @Date 2016-06-015
  33. * @Describtion 解析数值模型的excel控制层
  34. */
  35. @Controller
  36. @RequestMapping(value="view/show/")
  37. public class ExcelShower{
  38.  
  39. /**
  40. * SID.
  41. */
  42. private static final long serialVersionUID = -8344971443770122206L;
  43.  
  44. /**
  45. * 读取 Excel 显示页面.
  46. * @param properties
  47. * @return
  48. * @throws Exception
  49. */
  50. @SuppressWarnings("deprecation")
  51. @RequestMapping(value="read.action")
  52. public String read(HttpServletRequest request,HttpServletResponse response) throws Exception {
  53.  
  54. //定义一个字符串,用向前台传输拼写完毕的html页面
  55. String htmlExcel="";
  56.  
  57. String m="";
  58. InputStream inputStream=null;
  59. HttpURLConnection httpURLConnection=null;
  60. Element element = null;
  61. DocumentBuilder db = null;
  62. DocumentBuilderFactory dbf = null;
  63.  
  64. //读取a.xml文件
  65. File f = new File(getClass().getClassLoader().getResource("/config/a.xml").getPath());
  66. List<String> listString=new ArrayList<String>();
  67.  
  68. //解析a.xml的内容,拼写读取文件的路径
  69. try {
  70. dbf = DocumentBuilderFactory.newInstance();
  71. db = dbf.newDocumentBuilder();
  72. Document dt = db.parse(f);
  73. element = dt.getDocumentElement();
  74. NodeList childNodes = element.getChildNodes();
  75. for (int i = 0; i < childNodes.getLength(); i++) {
  76. Node node1 = childNodes.item(i);
  77. listString.add(node1.getTextContent());
  78. }
  79.  
  80. //要读取文件的路径
  81. m=listString.get(1)+listString.get(3)+"."+listString.get(5);
  82. }
  83. catch (Exception e) {
  84. e.printStackTrace();
  85. }
  86.  
  87. //拼写出完整的url
  88. String u_url="http://"+m;
  89. System.out.println(u_url);
  90. //根据url去服务器读取文件
  91. try{
  92. URLDecoder decoder = new URLDecoder();
  93. String path = decoder.decode(u_url,"UTF-8");
  94. // URL url = new URL(null,path,new com.sun.net.ssl.internal.www.protocol.https.Handler());
  95. URL url = new URL(path);
  96. System.out.println("url ========= "+url);
  97. if(url!=null){
  98. httpURLConnection=(HttpURLConnection) url.openConnection();
  99. httpURLConnection.setConnectTimeout(3000);
  100. httpURLConnection.setRequestMethod("GET");
  101. int responseCode=httpURLConnection.getResponseCode();
  102. if(responseCode==200){
  103. inputStream=httpURLConnection.getInputStream();
  104. }
  105. }
  106. }catch(Exception e){
  107. System.out.println("错误信息:"+e.getMessage());
  108. }
  109.  
  110. //引入poi的工具类
  111. POIReadExcelToHtml03 poire = new POIReadExcelToHtml03();
  112.  
  113. //取得url中完整的文件名称
  114. int index = u_url.lastIndexOf("/");
  115. char[] ch = u_url.toCharArray();
  116. String lastString =String.copyValueOf(ch, index + 1, ch.length - index - 1);
  117. String a_lastString=lastString.substring(lastString.length()-3,lastString.length());
  118.  
  119. //判断csv还是xls格式
  120. if(a_lastString.equals("csv")){
  121. //顶用CSVFileUtil工具类方法
  122. CSVFileUtil cSVFileUtil=new CSVFileUtil();
  123. htmlExcel=cSVFileUtil.readCsvFile(inputStream, "utf-8");
  124. }else{
  125. HSSFWorkbook workbook = new HSSFWorkbook(inputStream); //获整个Excel
  126. htmlExcel = poire.getExcelInfo(workbook);
  127. }
  128. //放入集合,返回页面
  129. List<String> list=new ArrayList<String>();
  130. list.add(htmlExcel);
  131.  
  132. //转为json格式
  133. String json=JSONArray.fromObject(list).toString();
  134.  
  135. //响应前台编码
  136. response.setContentType("application/json;charset=UTF-8");
  137. try {
  138. response.getWriter().print(json);
  139. }
  140. catch (IOException e)
  141. { e.printStackTrace(); }
  142. return null;
  143. }
  144. }

  CSVFileUtil.java

  1. package com.pera.taskstat.excelToHtml;
  2.  
  3. import java.io.BufferedReader;
  4. import java.io.BufferedWriter;
  5. import java.io.File;
  6. import java.io.FileInputStream;
  7. import java.io.FileNotFoundException;
  8. import java.io.FileWriter;
  9. import java.io.IOException;
  10. import java.io.InputStream;
  11. import java.io.InputStreamReader;
  12. import java.util.ArrayList;
  13. import java.util.List;
  14. import java.util.regex.Matcher;
  15. import java.util.regex.Pattern;
  16.  
  17. import net.sf.json.JSONArray;
  18.  
  19. public class CSVFileUtil
  20. {
  21.  
  22. /**
  23. * 构造,禁止实例化
  24. */
  25.  
  26. public static void main(String[] args)
  27. {
  28. // String argPath = "D:/test/435453453.csv";
  29. String argPath = "F://day01.csv";
  30.  
  31. // readCsvFile(argPath, "gbk");
  32. }
  33.  
  34. /**
  35. * csv文件读取<BR/>
  36. * 读取绝对路径为argPath的csv文件数据,并以List返回。
  37. *
  38. * @param argPath csv文件绝对路径
  39. * @return csv文件数据(List<String[]>)
  40. * @throws FileNotFoundException
  41. * @throws IOException
  42. */
  43. public String readCsvFile(InputStream reader, String encoding)
  44. {
  45.  
  46. List<String[]> list = new ArrayList<String[]>();
  47. // File file = new File(argPath);
  48.  
  49. // FileInputStream input = null;
  50. // InputStreamReader reader = null;
  51. BufferedReader bReader = null;
  52. try
  53. {
  54. // input = new FileInputStream(file);
  55. // if (encoding == null)
  56. // {
  57. // reader = new InputStreamReader(input);
  58. // }
  59. // else
  60. // {
  61. // reader = new InputStreamReader(input, encoding);
  62. // }
  63. bReader = new BufferedReader(new InputStreamReader(reader));
  64. String str = bReader.readLine();
  65. String str1 = "";
  66. Pattern pCells = Pattern.compile("(\"[^\"]*(\"{2})*[^\"]*\")*[^,]*,");
  67. while ((str = bReader.readLine()) != null)
  68. {
  69. if (!str.endsWith(","))
  70. {
  71. str = str + ",";
  72. }
  73. Matcher mCells = pCells.matcher(str);
  74. List<String> listTemp = new ArrayList<String>();
  75. // 读取每个单元格
  76. while (mCells.find()) {
  77. str1 = mCells.group();
  78. str1 = str1.replaceAll(
  79. "(?sm)\"?([^\"]*(\"{2})*[^\"]*)\"?.*,", "$1");
  80. str1 = str1.replaceAll("(?sm)(\"(\"))", "$2");
  81. listTemp.add(str1);
  82.  
  83. }
  84. list.add((String[]) listTemp.toArray(new String[listTemp.size()]));
  85. }
  86. }
  87. catch (FileNotFoundException e)
  88. {
  89. // TODO Auto-generated catch block
  90. e.printStackTrace();
  91. }
  92. catch (IOException e)
  93. {
  94. // TODO Auto-generated catch block
  95. e.printStackTrace();
  96. }
  97. finally
  98. {
  99. if (null != bReader)
  100. {
  101.  
  102. try
  103. {
  104. bReader.close();
  105. }
  106. catch (IOException e)
  107. {
  108. e.printStackTrace();
  109. }
  110. }
  111. }
  112.  
  113. StringBuffer lsb = new StringBuffer();
  114. lsb.append("<table width=100% style=\"border:2px solid #000;border-width:1px 0 0 1px;margin:2px 0 2px 0;border-collapse:collapse;\">");
  115. for(int i=0;i<list.size();i++){
  116. lsb.append("<tr style=\"border:1px solid #000;border-width:0 1px 1px 0;margin:2px 0 2px 0;\">");
  117.  
  118. for(int j=0;j<list.get(i).length;j++){
  119. lsb.append("<td style=\"border:1px solid #000;border-width:0 1px 1px 0;margin:2px 0 2px 0;\">"+list.get(i)[j]+"</td>");
  120. }
  121. lsb.append("</tr>");
  122. }
  123. lsb.append("</table>");
  124. String a=lsb.toString();
  125. List<String> sList=new ArrayList<String>();
  126. sList.add(a);
  127. String sourceListJson=JSONArray.fromObject(sList).toString();
  128. System.out.println("sourceListJson:"+sourceListJson);
  129.  
  130. return a;
  131. }
  132. }

  POIReadExcelToHtml03.java

  1. package com.pera.taskstat.excelToHtml;
  2.  
  3. import java.io.File;
  4. import java.io.FileInputStream;
  5. import java.io.InputStream;
  6. import java.text.DecimalFormat;
  7. import java.util.HashMap;
  8. import java.util.Map;
  9.  
  10. import org.apache.poi.hssf.usermodel.HSSFCell;
  11. import org.apache.poi.hssf.usermodel.HSSFCellStyle;
  12. import org.apache.poi.hssf.usermodel.HSSFFont;
  13. import org.apache.poi.hssf.usermodel.HSSFPalette;
  14. import org.apache.poi.hssf.usermodel.HSSFRow;
  15. import org.apache.poi.hssf.usermodel.HSSFWorkbook;
  16. import org.apache.poi.hssf.util.HSSFColor;
  17. import org.apache.poi.ss.usermodel.Sheet;
  18. import org.apache.poi.ss.util.CellRangeAddress;
  19.  
  20. public class POIReadExcelToHtml03 {
  21.  
  22. public static void main(String[] args) {
  23. try {
  24. POIReadExcelToHtml03 poire = new POIReadExcelToHtml03();
  25. String path = "C://SURFACE_UWYO_HOUR.xls";
  26. File sourcefile = new File(path);
  27. InputStream is = new FileInputStream(sourcefile);
  28. //POIFSFileSystem fs = new POIFSFileSystem(is);
  29. HSSFWorkbook wb = new HSSFWorkbook(is);
  30. String htmlExcel = poire.getExcelInfo(wb);
  31. System.out.println(poire.getExcelInfo(wb));
  32. is.close();
  33. } catch (Exception e) {
  34. e.printStackTrace();
  35. }
  36. }
  37. public String getHtmlExcel(HSSFWorkbook wb){
  38. try {
  39. String htmlPage = getExcelInfo(wb);
  40. return htmlPage;
  41. } catch (Exception e) {
  42. e.printStackTrace();
  43. }
  44. return null;
  45. }
  46.  
  47. public String getExcelInfo(HSSFWorkbook wb) throws Exception {
  48.  
  49. StringBuffer sb = new StringBuffer();
  50.  
  51. Sheet sheet = wb.getSheetAt(0);
  52.  
  53. int lastRowNum = sheet.getLastRowNum();
  54.  
  55. Map<String, String> map[] = getRowSpanColSpanMap(sheet);
  56.  
  57. sb.append("<table style='border-collapse:collapse;' width='100%'>");
  58.  
  59. HSSFRow row = null;
  60.  
  61. HSSFCell cell = null;
  62.  
  63. // System.out.println(sheet.getPhysicalNumberOfRows());
  64. for (int rowNum = sheet.getFirstRowNum(); rowNum <= lastRowNum; rowNum++) {
  65.  
  66. row = (HSSFRow) sheet.getRow(rowNum);
  67.  
  68. if (row == null) {
  69.  
  70. sb.append("<tr><td >  </td></tr>");
  71.  
  72. continue;
  73. }
  74.  
  75. sb.append("<tr>");
  76.  
  77. int lastColNum = row.getLastCellNum();
  78.  
  79. for (int colNum = 0; colNum < lastColNum; colNum++) {
  80.  
  81. cell = row.getCell(colNum);
  82.  
  83. if (cell == null) {
  84.  
  85. sb.append("<td> </td>");
  86.  
  87. continue;
  88. }
  89.  
  90. String stringValue = getCellValue(cell);
  91.  
  92. if (map[0].containsKey(rowNum + "," + colNum)) {
  93.  
  94. String pointString = map[0].get(rowNum + "," + colNum);
  95.  
  96. map[0].remove(rowNum + "," + colNum);
  97.  
  98. int bottomeRow = Integer.valueOf(pointString.split(",")[0]);
  99.  
  100. int bottomeCol = Integer.valueOf(pointString.split(",")[1]);
  101.  
  102. int rowSpan = bottomeRow - rowNum + 1;
  103.  
  104. int colSpan = bottomeCol - colNum + 1;
  105.  
  106. sb.append("<td rowspan= '" + rowSpan + "' colspan= '"
  107. + colSpan + "' ");
  108.  
  109. } else if (map[1].containsKey(rowNum + "," + colNum)) {
  110.  
  111. map[1].remove(rowNum + "," + colNum);
  112.  
  113. continue;
  114.  
  115. } else {
  116.  
  117. sb.append("<td ");
  118. }
  119.  
  120. HSSFCellStyle cellStyle = cell.getCellStyle();
  121.  
  122. if (cellStyle != null) {
  123.  
  124. short alignment = cellStyle.getAlignment();
  125.  
  126. sb.append("align='" + convertAlignToHtml(alignment) + "' ");
  127.  
  128. short verticalAlignment = cellStyle.getVerticalAlignment();
  129.  
  130. sb.append("valign='"
  131. + convertVerticalAlignToHtml(verticalAlignment)
  132. + "' ");
  133.  
  134. HSSFFont hf = cellStyle.getFont(wb);
  135.  
  136. short boldWeight = hf.getBoldweight();
  137.  
  138. short fontColor = hf.getColor();
  139.  
  140. sb.append("style='");
  141.  
  142. HSSFPalette palette = wb.getCustomPalette();
  143.  
  144. HSSFColor hc = palette.getColor(fontColor);
  145.  
  146. sb.append("font-weight:" + boldWeight + ";");
  147.  
  148. // System.out.println(hf.getFontHeight());
  149.  
  150. sb.append("font-size: " + hf.getFontHeight() / 2.5 + "%;");
  151.  
  152. String fontColorStr = convertToStardColor(hc);
  153.  
  154. if (fontColorStr != null && !"".equals(fontColorStr.trim())) {
  155.  
  156. sb.append("color:" + fontColorStr + ";");
  157. }
  158.  
  159. int columnWidth = sheet.getColumnWidth(cell.getColumnIndex()) ;
  160.  
  161. sb.append("width:" + columnWidth + "px;");
  162.  
  163. short bgColor = cellStyle.getFillForegroundColor();
  164.  
  165. hc = palette.getColor(bgColor);
  166.  
  167. String bgColorStr = convertToStardColor(hc);
  168.  
  169. if (bgColorStr != null && !"".equals(bgColorStr.trim())) {
  170.  
  171. sb.append("background-color:" + bgColorStr + ";");
  172. }
  173. /*
  174. short borderColor = cellStyle.getBottomBorderColor();
  175.  
  176. hc = palette.getColor(borderColor);
  177.  
  178. String borderColorStr = convertToStardColor(hc);
  179.  
  180. if (borderColorStr != null
  181. && !"".equals(borderColorStr.trim())) {
  182.  
  183. sb.append("border-color:" + borderColorStr + ";");
  184. }
  185. */
  186.  
  187. sb.append( getBorderStyle(palette,0,cellStyle.getBorderTop(),cellStyle.getTopBorderColor()));
  188. sb.append( getBorderStyle(palette,1,cellStyle.getBorderRight(),cellStyle.getRightBorderColor()));
  189. sb.append( getBorderStyle(palette,3,cellStyle.getBorderLeft(),cellStyle.getLeftBorderColor()));
  190. sb.append( getBorderStyle(palette,2,cellStyle.getBorderBottom(),cellStyle.getBottomBorderColor()));
  191.  
  192. // boolean borderBoolean = cellStyle.getWrapText();
  193. //
  194. // if(borderBoolean){
  195. // sb.append("border-style: inset;");
  196. // }
  197.  
  198. sb.append("' ");
  199. }
  200.  
  201. sb.append(">");
  202.  
  203. if (stringValue == null || "".equals(stringValue.trim())) {
  204.  
  205. sb.append("   ");
  206. } else {
  207.  
  208. sb.append(stringValue.replace(String.valueOf((char) 160),
  209. " "));
  210.  
  211. }
  212.  
  213. sb.append("</td>");
  214.  
  215. }
  216.  
  217. sb.append("</tr>");
  218. }
  219.  
  220. sb.append("</table>");
  221.  
  222. return sb.toString();
  223. }
  224.  
  225. @SuppressWarnings("unchecked")
  226. private static Map<String, String>[] getRowSpanColSpanMap(Sheet sheet) {
  227.  
  228. Map<String, String> map0 = new HashMap<String, String>();
  229. Map<String, String> map1 = new HashMap<String, String>();
  230.  
  231. int mergedNum = sheet.getNumMergedRegions();
  232.  
  233. CellRangeAddress range = null;
  234.  
  235. for (int i = 0; i < mergedNum; i++) {
  236.  
  237. range = sheet.getMergedRegion(i);
  238.  
  239. int topRow = range.getFirstRow();
  240.  
  241. int topCol = range.getFirstColumn();
  242.  
  243. int bottomRow = range.getLastRow();
  244.  
  245. int bottomCol = range.getLastColumn();
  246.  
  247. map0.put(topRow + "," + topCol, bottomRow + "," + bottomCol);
  248.  
  249. // System.out.println(topRow + "," + topCol + "," + bottomRow + ","
  250. // + bottomCol);
  251.  
  252. int tempRow = topRow;
  253.  
  254. while (tempRow <= bottomRow) {
  255.  
  256. int tempCol = topCol;
  257.  
  258. while (tempCol <= bottomCol) {
  259.  
  260. map1.put(tempRow + "," + tempCol, "");
  261.  
  262. tempCol++;
  263. }
  264.  
  265. tempRow++;
  266. }
  267.  
  268. map1.remove(topRow + "," + topCol);
  269.  
  270. }
  271.  
  272. Map[] map = { map0, map1 };
  273.  
  274. return map;
  275. }
  276.  
  277. private static String convertAlignToHtml(short alignment) {
  278.  
  279. String align = "left";
  280.  
  281. switch (alignment) {
  282.  
  283. case HSSFCellStyle.ALIGN_LEFT:
  284. align = "left";
  285. break;
  286. case HSSFCellStyle.ALIGN_CENTER:
  287. align = "center";
  288. break;
  289. case HSSFCellStyle.ALIGN_RIGHT:
  290. align = "right";
  291. break;
  292.  
  293. default:
  294. break;
  295. }
  296.  
  297. return align;
  298. }
  299.  
  300. private static String convertVerticalAlignToHtml(short verticalAlignment) {
  301.  
  302. String valign = "middle";
  303.  
  304. switch (verticalAlignment) {
  305.  
  306. case HSSFCellStyle.VERTICAL_BOTTOM:
  307. valign = "bottom";
  308. break;
  309. case HSSFCellStyle.VERTICAL_CENTER:
  310. valign = "center";
  311. break;
  312. case HSSFCellStyle.VERTICAL_TOP:
  313. valign = "top";
  314. break;
  315. default:
  316. break;
  317. }
  318.  
  319. return valign;
  320. }
  321.  
  322. private static String convertToStardColor(HSSFColor hc) {
  323.  
  324. StringBuffer sb = new StringBuffer("");
  325.  
  326. if (hc != null) {
  327.  
  328. if (HSSFColor.AUTOMATIC.index == hc.getIndex()) {
  329.  
  330. return null;
  331. }
  332. sb.append("#");
  333.  
  334. for (int i = 0; i < hc.getTriplet().length; i++) {
  335.  
  336. sb.append(fillWithZero(Integer.toHexString(hc.getTriplet()[i])));
  337. }
  338. }
  339.  
  340. return sb.toString();
  341. }
  342.  
  343. private static String fillWithZero(String str) {
  344.  
  345. if (str != null && str.length() < 2) {
  346.  
  347. return "0" + str;
  348. }
  349. return str;
  350. }
  351.  
  352. private static String getCellValue(HSSFCell cell) {
  353.  
  354. switch (cell.getCellType()) {
  355.  
  356. case HSSFCell.CELL_TYPE_NUMERIC:
  357.  
  358. //DecimalFormat format = new DecimalFormat("#0.##");
  359. //return format.format(cell.getNumericCellValue());
  360. // return String.valueOf(cell.getNumericCellValue());
  361. DecimalFormat format = new DecimalFormat();
  362. //将数字显示为数字
  363. // format.applyPattern("0.00%");
  364. return format.format(cell.getNumericCellValue());
  365.  
  366. case HSSFCell.CELL_TYPE_STRING:
  367.  
  368. return cell.getStringCellValue();
  369.  
  370. // case HSSFCell.CELL_TYPE_FORMULA:
  371. //
  372. // return cell.getCellFormula();
  373.  
  374. default:
  375. return "";
  376. }
  377. }
  378.  
  379. static String[] bordesr={"border-top:","border-right:","border-bottom:","border-left:"};
  380. static String[] borderStyles={"solid ","solid ","solid ","solid ","solid ","solid ","solid ","solid ","solid ","solid","solid","solid","solid","solid"};
  381. //tring[] borderClors={};
  382. private static String getBorderStyle( HSSFPalette palette ,int b,short s, short t){
  383. if(s==0)return bordesr[b]+borderStyles[s]+"#d0d7e5 1px;";;
  384. String borderColorStr = convertToStardColor( palette.getColor(t));
  385. borderColorStr=borderColorStr==null|| borderColorStr.length()<1?"#000000":borderColorStr;
  386. // System.out.println( bordesr[b]+borderStyles[s]+borderColorStr+" 1px; "+t);
  387.  
  388. return bordesr[b]+borderStyles[s]+borderColorStr+" 1px;";
  389. }
  390.  
  391. }

  

java 解析excle的更多相关文章

  1. java解析xml的三种方法

    java解析XML的三种方法 1.SAX事件解析 package com.wzh.sax; import org.xml.sax.Attributes; import org.xml.sax.SAXE ...

  2. atitit.java解析sql语言解析器解释器的实现

    atitit.java解析sql语言解析器解释器的实现 1. 解析sql的本质:实现一个4gl dsl编程语言的编译器 1 2. 解析sql的主要的流程,词法分析,而后进行语法分析,语义分析,构建sq ...

  3. java 解析XML文档

    Java 解析XML文档 一.解析XML文档方式: 1.DOM方式:将整个XML文档读取到内存中,按照XML文件的树状结构图进行解析. 2.SAX方式:基于事件的解析,只需要加载XML中的部分数据,优 ...

  4. Java 解析 XML

    Java 解析 XML 标签: Java基础 XML解析技术有两种 DOM SAX DOM方式 根据XML的层级结构在内存中分配一个树形结构,把XML的标签,属性和文本等元素都封装成树的节点对象 优点 ...

  5. JAVA解析XML的四种方式

    java解析xml文件四种方式 1.介绍 1)DOM(JAXP Crimson解析器) DOM是用与平台和语言无关的方式表示XML文档的官方W3C标准.DOM是以层次结构组织的节点或信息片断的集合.这 ...

  6. JSON 之JAVA 解析

    一.   JSON (JavaScript Object Notation)一种简单的数据格式,比xml更轻巧. Json建构于两种结构:     1.“名称/值”对的集合(A collection ...

  7. Java解析XML汇总(DOM/SAX/JDOM/DOM4j/XPath)

    [目录] 一.[基础知识——扫盲] 二.[DOM.SAX.JDOM.DOM4j简单使用介绍] 三.[性能测试] 四.[对比] 五.[小插曲XPath] 六.[补充] 关键字:Java解析xml.解析x ...

  8. Java 解析epub格式电子书,helloWorld程序,附带源程序和相关jar包

    秀才坤坤出品 一.epub格式电子书 相关材料和源码均在链接中可以下载:http://pan.baidu.com/s/1bnm8YXT 包括 1.JAVA项目工程test_epub,里面包括了jar包 ...

  9. Java解析XML文档(简单实例)——dom解析xml

      一.前言 用Java解析XML文档,最常用的有两种方法:使用基于事件的XML简单API(Simple API for XML)称为SAX和基于树和节点的文档对象模型(Document Object ...

随机推荐

  1. (原创)linux安装xgboost快速高效方法

    1.先安装git ubuntu:   apt-get install git centos:    yum install git 2.下载xgboost仓库,注意有--recursive(有子模块哦 ...

  2. 算法之美--2.2 Array

    2016-12-02    00:24:12 利用抽象数据类型实现Array:主要用C++模板实现数组类:体会一个完整的C++类的写法,能顺利写出来的人不多了,特别是对复制构造函数和重载= []运算, ...

  3. 2016.8.19 在dialog上增加一个button出现错误:failed to execute setAttribute on Element...

    目标:想要在dialog上多加一个button. 语法来自: http://api.jqueryui.com/dialog/#option-buttons   可见新增在dialog上的button要 ...

  4. 转: Gradle:Gradle入门

    from: http://blog.csdn.net/p106786860/article/details/50422463

  5. C# Color颜色对照表

    Color命名空间  using System.Drawing; Color.AliceBlue 240,248,255 Color.LightSalmon 255,160,122 Color.Ant ...

  6. iWatch报错: Missing com.apple.developer.healthkit entitlement

    今天开发iWatch项目,报错: Optional (Error "Missing come.apple.developer.healthkit entitlement.") Us ...

  7. greenDAO学习分享总结

    greenDAO(最新版本号V2.0.0的Readme) ======== greenDAO is a light & fast ORM solution for Android that m ...

  8. UVA LIVE-4642 - Malfatti Circles

    给出三角形三个顶点,求出三个互切的圆的半径 尽管大白鼠说能够推出公式,但是这个公式仅仅怕没那么easy推--我左看右看上看下看也推不出. 应该是要做辅助线什么的,那也-- 因为非常easy就推出了关于 ...

  9. webdriver.py--解说

    一.全局操作类 start_session 使用指定的desired capabilities创建一个会话(session)start_client 新建一个webdriver会话session前调用 ...

  10. 15:取近似值ApproximateValue

    题目描述 写出一个程序,接受一个正浮点数值,输出该数值的近似整数值.如果小数点后数值大于等于5,向上取整:小于5,则向下取整. 输入描述:输入一个正浮点数值 输出描述:输出该数值的近似整数值 输入例子 ...