Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我如何检测文本已被曲目更改请求删除?_Java_Apache Poi - Fatal编程技术网

Java 我如何检测文本已被曲目更改请求删除?

Java 我如何检测文本已被曲目更改请求删除?,java,apache-poi,Java,Apache Poi,我正在使用ApachePOI读取word文件,它正在工作 我使用XWPFRun实例列表阅读文档文本,这很好 但是,如果对文档启用了跟踪更改,我还将获得已删除文本的XWPFRun实例,如果删除未被接受。我不想包括这篇文章 那么,有没有一种方法可以检测XWPDRun节点的跟踪更改状态,或者更好的方法可以像接受所有跟踪更改一样解析文档?XWPFRun还不支持这种方法。但我们可以确定是否有标记为已删除的文本运行 正常文本运行的XML如下所示: <w:r> <w:t>Lorem&

我正在使用ApachePOI读取word文件,它正在工作

我使用XWPFRun实例列表阅读文档文本,这很好

但是,如果对文档启用了跟踪更改,我还将获得已删除文本的XWPFRun实例,如果删除未被接受。我不想包括这篇文章


那么,有没有一种方法可以检测XWPDRun节点的跟踪更改状态,或者更好的方法可以像接受所有跟踪更改一样解析文档?

XWPFRun还不支持这种方法。但我们可以确定是否有标记为已删除的文本运行

正常文本运行的
XML
如下所示:

<w:r>
 <w:t>Lorem</w:t>
</w:r>
<w:del w:id="0" w:author="axel" w:date="2020-04-23T18:57:00Z">
 <w:r w:rsidDel="00C63AEB">
  <w:delText>ipsum</w:delText>
 </w:r>
</w:del>
import java.io.FileInputStream;

import org.apache.poi.xwpf.usermodel.*;

public class WordReadDeletedRuns {

 public static void main(String[] args) throws Exception {

  String inFilePath = "./WordExample.docx";

  XWPFDocument document = new XWPFDocument(new FileInputStream(inFilePath));
  for (IBodyElement bodyElement : document.getBodyElements()) {
   if (bodyElement instanceof XWPFParagraph) {
    XWPFParagraph paragraph = (XWPFParagraph)bodyElement;
    for (IRunElement runElement : paragraph.getIRuns()) {
     if (runElement instanceof XWPFRun) {
      XWPFRun run = (XWPFRun)runElement;
      System.out.println("Text run found: " + run.text());
      System.out.println(run.getText(0)); // null for deleted runs
      System.out.println(run.getCTR().getRsidDel()); // null for not deleted runs, byte[] for deleted runs
      System.out.println(run.getCTR().getDelTextList().size()); // empty list for not deleted runs, filled list for deleted runs
     }
    }
   }
  }
  document.close();
 }
}