<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    佳麗斯 加厚雙人/單人秋冬被子暖冬 羊毛被芯羊毛柔絲被特價包郵 憂憂魚冬外穿打底褲女秋冬厚長褲女褲加絨加厚高腰彈力鉛筆褲靴褲 韓國代購2013新款 韓版秋冬休閑女時尚磨破口袋衛衣韓版學生裝 潮

    有時,退一步,能一口氣進幾步,只是這先退一步需要勇氣和自信。

    用心愛你,努力工作。

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      70 隨筆 :: 1 文章 :: 33 評論 :: 0 Trackbacks
        在開發中,經常遇到需要用去解析各類非結構化文本,像doc,xls,pdf,ppt,xml,html.
        本人在開發站內搜索時,需要加入對各類文件類型的支持,以方便建立索引。解析各類文檔調用了幾個開源的包。像dom4j-1.6.1.jar,FontBox-0.1.0-dev.jar,htmllexer.jar,htmlparser.jar,PDFBox-0.7.3.jar,poi-3.5-FINAL-20090928.jar,poi-scratchpad-3.5-FINAL-20090928.jar。這些開源的包可以讓我們很方便去解析各類非結構化文本。

    jar包的下載地址: http://www.ziddu.com/download/7017588/devlib.rar.html

    代碼如下:
    package com.ducklyl;

    import java.io.File;
    import java.io.FileInputStream;
    import java.util.Iterator;
    import org.apache.poi.hslf.model.Slide;
    import org.apache.poi.hslf.model.TextRun;
    import org.apache.poi.hslf.usermodel.SlideShow;
    import org.apache.poi.hssf.usermodel.HSSFCell;
    import org.apache.poi.hssf.usermodel.HSSFRow;
    import org.apache.poi.hssf.usermodel.HSSFSheet;
    import org.apache.poi.hssf.usermodel.HSSFWorkbook;
    import org.apache.poi.hwpf.HWPFDocument;
    import org.apache.poi.hwpf.usermodel.Paragraph;
    import org.apache.poi.hwpf.usermodel.Range;
    import org.dom4j.Document;
    import org.dom4j.Element;
    import org.dom4j.io.SAXReader;
    import org.htmlparser.Parser;
    import org.htmlparser.filters.*;

    import org.htmlparser.*;
    import org.htmlparser.nodes.TextNode;
    import org.htmlparser.util.*;

    import org.pdfbox.pdfparser.PDFParser;
    import org.pdfbox.pdmodel.PDDocument;
    import org.pdfbox.util.PDFTextStripper;



    public class HandleFile {
        
    public static void main(String args[]){
            String str
    ="e:\\test.HTML";
            System.out.println(handleFile(str));
        }

        
    public static String handleFile(String filename){
            String result
    ="";
            String fileType
    =filename.substring(filename.lastIndexOf(".")+1, filename.length());
            
    if(fileType.equalsIgnoreCase("pdf"))
                result
    =handlePdf(filename);
            
    else if(fileType.equalsIgnoreCase("xls"))
                result
    =handleExcel(filename);
            
    else if(fileType.equalsIgnoreCase("doc"))
                result
    =handleDoc(filename);
            
    else if(fileType.equalsIgnoreCase("xml"))
                result
    =handleXml(filename);
            
    else if(fileType.equalsIgnoreCase("ppt"))
                result
    =handlePPT(filename);
            
    else if(fileType.equalsIgnoreCase("htm")||fileType.equalsIgnoreCase("html"))
                result
    =handleHtml(filename);
            
    return result;
        }
    /**
     * 解析HTML
     * 
    @param filename
     * 
    @return
     
    */
        
    public static String handleHtml(String filename){
            String content
    ="";
            
    try{
                File file
    =new File(filename);
                
    if(!file.exists()) return content;
                
                Parser parser
    =new Parser(filename);
                parser.setEncoding(
    "UTF-8");
                NodeFilter textFilter
    =new NodeClassFilter(TextNode.class);
                NodeList nodes
    =parser.extractAllNodesThatMatch(textFilter);
                
    for(int i=0;i<nodes.size();i++){
                    TextNode textnode
    =(TextNode)nodes.elementAt(i);
                    String line
    =textnode.toPlainTextString().trim();
                    
    if(line.equals("")) continue;
                    content
    =content+line;
                }
            }
    catch(Exception e){
                e.printStackTrace();
            }
            
    return content;
        }
        
    /**
         * 解析PPT
         * 
    @param filename
         * 
    @return
         
    */
        
    public static String handlePPT(String filename){
            StringBuffer content 
    = new StringBuffer("");
            
    try{
                File file
    =new File(filename);
                
    if(!file.exists()) {
                    
    return content.toString();
                }
                FileInputStream instream
    =new FileInputStream(file);
                SlideShow ppt 
    = new SlideShow(instream);
                Slide[] slides 
    = ppt.getSlides();
                
    for(int i=0;i<slides.length;i++){
                    TextRun[] t 
    = slides[i].getTextRuns();//為了取得幻燈片的文字內容,建立TextRun
                    for(int j=0;j<t.length;j++){
                        content.append(t[j].getText());
    //這里會將文字內容加到content中去
                    }
                    content.append(slides[i].getTitle());
                }
            }
    catch(Exception e){
                e.printStackTrace();
            }
            
    return content.toString();
        }
        
    /**
         * 解析XML
         * 
    @param filename
         * 
    @return
         
    */
        
    public static String handleXml(String filename){
            String content
    ="",value="",text="";
            
    try{
                File file
    =new File(filename);
                
    if(!file.exists()) {
                    
    return content;
                }
                  SAXReader saxReader 
    = new SAXReader();
                  Document document 
    = saxReader.read(file);
                  Element root 
    = document.getRootElement() ;
                  
                  Iterator iter
    =root.elementIterator() ;
                   
    while(iter.hasNext()){
                      Element element
    =(Element)iter.next();
                      value
    =element.getStringValue();
                      
    if(!value.trim().equals(""))    content=content+value;
                   }
            }
    catch(Exception e){
                    e.printStackTrace();
            }
            
    return content;
        }
        
    /**
         * 解析DOC
         * 
    @param filename
         * 
    @return
         
    */
        
    public static String handleDoc(String filename){
            String content
    ="";
            
    try{
                File file
    =new File(filename);
                
    if(!file.exists()) {
                    
    return content;
                }
                FileInputStream instream
    =new FileInputStream(file);
                HWPFDocument doc
    =new HWPFDocument(instream);
                Range range
    =doc.getRange();
                String text
    =range.text();
                
    for(int i=0;i<range.numParagraphs();i++){
                    Paragraph p
    =range.getParagraph(i);
                    content
    =content+p.text().trim()+"\n";
                }
            }
    catch(Exception e){
                e.printStackTrace();
            }
            
    return content;
        }
        
    /**
         * 解析PDF
         * 
    @param filename
         * 
    @return
         
    */
        
    public static String handlePdf(String filename){
            String contenttxt
    ="";
            
    try{
                File file
    =new File(filename);
                
    if(!file.exists()){
                    
    return contenttxt;
                }
                FileInputStream instream
    =new FileInputStream(file);
                PDFParser parser
    =new PDFParser(instream);
                parser.parse();
                PDDocument pdfdocument
    =parser.getPDDocument();
                PDFTextStripper pdfstripper
    =new PDFTextStripper();
                contenttxt
    =pdfstripper.getText(pdfdocument);
            }
    catch(Exception e){
                e.printStackTrace();
            }
            
    return contenttxt;
        }
        
    /**
         * 解析EXCEL
         * 
    @param filename
         * 
    @return
         
    */
        
    public static String handleExcel(String filename){
            String content
    ="";
            
    try{
                File file
    =new File(filename);
                
    if(!file.exists()) {
                    
    return content;
                }
                HSSFWorkbook workbook
    =new HSSFWorkbook(new FileInputStream(file));
                HSSFSheet sheet
    =workbook.getSheetAt(0);
                
                
    for(int i=0;i<workbook.getNumberOfSheets();i++){
                    sheet
    =workbook.getSheetAt(i);
                    
    if(sheet!=null){
                        
    for(int m=0;m<sheet.getLastRowNum();m++){
                            HSSFRow row
    =sheet.getRow(m);
                            
    if(row==nullbreak;
                            
                            
    for(int n=0;n<row.getLastCellNum();n++){
                                HSSFCell cell
    =row.getCell(n);
                                
    if(cell==nullbreak;
                                
    int type=cell.getCellType();
                                
    switch(type){
                                    
    case 0:
                                        content
    =content+cell.getNumericCellValue();
                                        
    break;
                                    
    case 1:
                                        content
    =content+cell.getStringCellValue();
                                        
    break;
                                    
    case 3:
                                        
    break;
                                    
    default:
                                        ;
                                }
                            }
                            content
    =content+"\n";
                        }
                    }
                    content
    =content+"\n";
                }

            }
    catch(Exception e){    
                e.printStackTrace();
            }
            
    return content;
        }
    }
    不想拷貝的朋友可以直接下載源代碼:http://www.ziddu.com/download/7017614/src.txt.html

    以上代碼比較簡單,就不作說明,希望能幫到需要用的朋友。當然上面只是一個簡單的例子,如果要具體應用,大家可以自己再改寫。如果你有其它的想法,歡迎分享你的精彩想法。


    轉載請注明出處

    posted on 2009-10-22 10:55 王生生 閱讀(1631) 評論(0)  編輯  收藏 所屬分類: Java
    森露2013新款豹紋打底衫 高領 女 長袖 修身長袖t恤女 加絨加厚冬 2013春秋新款女裝 潮修身大碼長袖小西裝外套女 韓版中長款小西裝 憂憂魚2013秋冬新款直筒褲女顯瘦長褲加絨黑色休閑褲修身西褲女褲
    主站蜘蛛池模板: 二区久久国产乱子伦免费精品| 久久亚洲免费视频| 国产免费人成在线视频| 四虎影视www四虎免费| 成人免费无码大片a毛片软件| 欧美三级在线电影免费| 一二三四在线播放免费观看中文版视频| 99re6在线精品视频免费播放| 国产白丝无码免费视频| 嫩草成人永久免费观看| 一级毛片在线免费观看| 99re视频精品全部免费| h视频在线免费看| AV免费网址在线观看| 免费观看的av毛片的网站| 国产精品免费综合一区视频| www国产亚洲精品久久久日本| 亚洲AV无码乱码精品国产| 亚洲区日韩区无码区| 亚洲精品乱码久久久久久中文字幕| 日韩亚洲一区二区三区| 亚洲人成在线影院| 亚洲成a人片在线不卡| 亚洲国产成人精品无码区花野真一| 337p日本欧洲亚洲大胆人人| 免费国产在线精品一区| 搡女人免费免费视频观看| 99久9在线|免费| 在线免费观看污网站| 亚洲日韩国产一区二区三区| 亚洲s色大片在线观看| 亚洲日韩乱码久久久久久| 亚洲综合av一区二区三区| 黄色免费在线网址| 在线观看人成视频免费无遮挡| 日韩免费无码视频一区二区三区| 日本亚洲免费无线码| 成人亚洲网站www在线观看| 亚洲成AV人片一区二区密柚| 亚洲三级在线观看| 国产VA免费精品高清在线|