试卷word读取

package com.boventech.learning.test;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;

import org.apache.poi.xwpf.extractor.XWPFWordExtractor;
import org.apache.poi.xwpf.usermodel.XWPFDocument;

import com.google.common.base.Strings;


public class DocRead {
	
	public static final String FILEPATH = "D:/123.doc";
	
	public static final String BT = "标题";
	
	public static final String XZT = "选择题";
	
	public static final String PDT = "判断题";
	
	public static final String TKT = "填空题";
	
	public static final String JDT = "问答题";
	
	public static final String T = "题";
	
	public static final String MC = "名称";
	
	public static final String XX = "选项";
	
	public static final String CONTENT = "内容";
	
	/**
	 * @param args
	 * @throws Exception 
	 */
	public static void main(String[] args){
		
		String filePath = "D:/123.doc";
    	String text = read(filePath);
    	
    	//--------------------------------标题------------------------------------
    	String btContent = getContent(text,BT);
    	String btMc = getContent(btContent,MC);
    	System.out.println(btMc);
    	//----------------------------------选择题---------------------------------------
    	String xztContent = getContent(text,XZT);
    	String xztMc = getContent(xztContent,MC);
    	System.out.println(xztMc);
    	getSingleContent(xztContent,T,MC,PDT);
    	
    	//----------------------------------判断题---------------------------------------
    	String pdtContent = getContent(text,PDT);
    	String pdtMc = getContent(pdtContent,MC);
    	System.out.println(pdtMc);
    	getSingleContent(pdtContent,T,MC,PDT);
    	
    	//----------------------------------填空题---------------------------------------
    	String tktContent = getContent(text,TKT);
    	String tktMc = getContent(tktContent,MC);
    	System.out.println(tktMc);
    	getSingleContent(tktContent,T,MC,TKT);
    	
    	//----------------------------------解答题---------------------------------------
    	String jdtContent = getContent(text,JDT);
    	String jdtMc = getContent(jdtContent,MC);
    	System.out.println(jdtMc);
    	getSingleContent(jdtContent,T,MC,JDT);
	}
	
	public static String read(String path){
		File file = new File(path);
        try {
            FileInputStream fis = new FileInputStream(file);
            XWPFDocument document = new XWPFDocument(fis);
            XWPFWordExtractor xwpfWordExtractor = new XWPFWordExtractor(document);
            String text = xwpfWordExtractor.getText();
            return text;
        } catch (IOException e) {
            e.printStackTrace();
        }
		return "";
	}
	
	/**
	 * 获取标签中的内容
	 * @param text
	 * @param tag
	 * @return
	 */
	public static String getContent(String text,String tag){
		String bt = "";
		int btIndex = text.indexOf("<"+tag+">");
		int btLastIndex = text.indexOf("</"+tag+">");
    	if(btIndex!=-1&&btLastIndex!=-1){
    		bt = text.substring(btIndex+("<"+tag+">").length(), btLastIndex);
    	}
		return bt;
	}
	
	/**
	 * 获取某一组的某一个单项,如单选题这个组别中有多个单选题(单项)
	 * @param text
	 * @param tag1 单项标签名,(例如:题)
	 * @param tag2 上面标签的名称或者其他什么(标签)
	 * @return
	 */
	public static void getSingleContent(String text,String tag1,String tag2,String questionType){
		for(int i = 1;i>=1;i++){
    		String tContent = getContent(text,tag1+i);
    		String tMc = getContent(tContent,tag2);
    		if(Strings.isNullOrEmpty(tContent)||Strings.isNullOrEmpty(tMc)) break;
    		if(XZT.equals(questionType)){
    			for(int j = 1;j>=1;j++){
        			String xxContent = getContent(tContent, XX+j);
        			String cContent = getContent(xxContent, CONTENT);
        			if(Strings.isNullOrEmpty(xxContent)||Strings.isNullOrEmpty(cContent)) break;
        			System.out.println(cContent);
        		}
    		}
    		//下面再做添加操作
    		System.out.println(tMc);
    	}
	}
}

你可能感兴趣的:(试卷word读取)