如何将子字符串从 .docx 存储到 java bean class?

How to store substrings from .docx to java bean class?

我需要根据从 .docx 文件读取的字符串创建 java bean class。 docx 文件如下所示:

Comments:
20.6.2018 16:18-16:25 problem: first problem, action first action
20.6.2018 16:20-16:45 problem: second problem, action: second action
20.6.2018 16:25-16:30 problem:  third problem, action: third action
Check list based on data from 24.6.2018.

我创建了一个 CheckList Class 来读取我使用 FAData.class POJO 实例根据 How to parse a csv file and store datails in java bean class

设置其即时变量的 docx
public class CheckList {

    String Check;
    ArrayList<String> ActionG = new ArrayList<String>();
    ArrayList<String> ProblemG = new ArrayList<String>();
    ArrayList<String> DateG = new ArrayList<String>();
    ArrayList<String> BeginTimeG = new ArrayList<String>();
    ArrayList<String> EndTimeG = new ArrayList<String>();

    public void readDocxFile(String fileName) {
        FAData data = new FAData(); // instance of FAData POJO
        try {
            File file = new File(fileName);
            FileInputStream fis = new FileInputStream(file.getAbsolutePath());
            XWPFDocument document = new XWPFDocument(fis);
            List<XWPFParagraph> paragraphs = document.getParagraphs();
            String Comments = "";
            for (XWPFParagraph para : paragraphs) {
                Comments = Comments.concat(para.getText() + "\n");
            }
            Check = Comments.substring(Comments.lastIndexOf("Check"), Comments.length());  // split the last sentence
            String CommentsG = Comments.substring(Comments.indexOf(":") + 1, Comments.lastIndexOf("Check")); // split the sentences between „Comments:” and the last sentence

            data.setCheck(Check);   // add the Check instant variable to FAData POJO 

            if (!CommentsG.equals("")) {      // check if sentences exist between „Comments:” and the last sentence
// add the substrings to ArrayLists

                String[] FAG = CommentsG.split("\n");
                for (int i = 1; i < FAG.length; i++) {
                    ActionG.add(FAG[i].substring(FAG[i].indexOf("action") + 7, FAG[i].length()));
                    ProblemG.add(FAG[i].substring(FAG[i].indexOf("problem") + 9, FAG[i].indexOf("action") - 2));
                    DateG.add(FAG[i].substring(0, 10));
                    BeginTimeG.add(FAG[i].substring(FAG[i].indexOf(":") - 2, FAG[i].indexOf("-")));
                    EndTimeG.add(FAG[i].substring(FAG[i].indexOf("-") + 1, FAG[i].indexOf("-") + 6));
                }
            }
// add the ArrayList instant variables to FAData POJO
            data.setActionG(ActionG);
            data.setProblemG(ProblemG);
            data.setDateG(DateG);
            data.setBeginTimeG(BeginTimeG);
            data.setEndTimeG(EndTimeG);

            fis.close();

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

public class FAData {
    String Check;
    ArrayList<String> ActionG = new ArrayList<String>();
    ArrayList<String> ProblemG = new ArrayList<String>();
    ArrayList<String> DateG = new ArrayList<String>();
    ArrayList<String> BeginTimeG = new ArrayList<String>();
    ArrayList<String> EndTimeG = new ArrayList<String>();

    public String getCheck() {
        return Check;
    }

    public void setCheck(String Check) {
        this.Check = Check;
    }

    public ArrayList<String> getActionG() {
        return ActionG;
    }

    public void setActionG(ArrayList<String> ActionG) {
        this.ActionG = ActionG;
    }
    ....
    //Getter and Setter for the rest variables 
}

我测试了变量是否可以从 FAData.class:

public class test {
    public static void main(String[] args) {
        CheckList TC = new CheckList();
        String fileName = "c:\path\to\docx";
        try {

            TC.readDocxFile(fileName);
            FAData datas = new FAData();
            String testCheck = datas.getCheck();
            ArrayList<String> testDate = datas.getDateG();

            System.out.println(testCheck);
            System.out.println(testDate);

        } catch (Exception e) {
            System.out.println(e);
        }
    }
}

但我得到了空值。我不知道我做错了什么或者我应该怎么做 FAData.class。有人可以给我建议吗?

与此同时,我找到了解决方案。我在 readDocxFile 方法中添加了 List<FAData> datas = new ArrayList<FAData>(); 并向其添加了 data 值:

datas.add(data);

如果我在另一个 class 中创建一个新的 CheckList 对象实例,我可以获得数据,例如:

CheckList TC = new CheckList();
    List<FAData> D = TC.readDocxFile(fileName);

    String DateG = D.get(0).getDateG(0);