<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秋冬新款直筒褲女顯瘦長褲加絨黑色休閑褲修身西褲女褲
    主站蜘蛛池模板: 亚洲国产婷婷六月丁香| 免费一级毛片正在播放| 亚洲成色在线综合网站| 国产成人无码免费看片软件 | 91亚洲精品视频| 国产激情免费视频在线观看| 久久夜色精品国产亚洲| 久草免费手机视频| 亚洲黄网在线观看| 国产乱子精品免费视观看片| 亚洲人成在线免费观看| 日本一区二区三区免费高清| 亚洲AV永久无码精品放毛片| 四虎亚洲国产成人久久精品| 波霸在线精品视频免费观看| 亚洲av日韩综合一区在线观看| 91免费国产精品| 亚洲日韩AV一区二区三区四区| 日本大片在线看黄a∨免费| 免费一级特黄特色大片| 在线亚洲精品自拍| 久久精品人成免费| 亚洲乱亚洲乱妇24p| 亚洲偷自拍拍综合网| 日韩成人免费视频| 亚洲国产日韩综合久久精品| 免费一级毛片在线播放| 在线观看免费视频网站色| 亚洲精品国产情侣av在线| 日本特黄特黄刺激大片免费| 99久久免费国产精精品| 亚洲图片校园春色| 亚洲AV永久无码精品一区二区国产| 岛国岛国免费V片在线观看| 亚洲理论精品午夜电影| 国产高清免费在线| 黄页免费在线观看| 亚洲国产精品嫩草影院| 亚洲热线99精品视频| 成人毛片免费观看视频在线| 一级人做人a爰免费视频|