当前位置: 首页 > 知识库问答 >
问题:

使用Docx4j从Docx文件中读取文本

谭炎彬
2023-03-14
public void getTextFromOtherFile() throws Docx4JException, JAXBException {
    File doc = new File("D:\\helloWorld.docx");
    WordprocessingMLPackage wordMLPackage = WordprocessingMLPackage.load(doc);
    MainDocumentPart mainDocumentPart = wordMLPackage.getMainDocumentPart();
    System.out.println(mainDocumentPart.getXML());
}
List<Object> jAXBNodesViaXPath = mainDocumentPart.getJAXBNodesViaXPath("//w:t", true);

我面临的例外情况如下:

SEVERE: Servlet.service() for servlet [jsp] in context with path [/osses] threw exception [javax.servlet.ServletException: java.lang.NoSuchMethodError: org.apache.xml.utils.DefaultErrorHandler.<init>(Z)V] with root cause

java.lang.nosuchmethoderror:org.apache.xml.utils.DefaulTerrorHandler.(Z)V在org.docx4j.org.apache.xalan.transformer.transformerIdentityImpl.(TransformerIdentityImpl.transformerIdentityImpl.(TransformerIdentityImpl.)在org.docx4j.org.apache.xalan.transformer.transformerIdentityImpl.(.docx4j.xmlutils.xpath(xmlutils.java:1206)在org.docx4j.xmlutils.xpath(xmlutils.java:1200)在org.docx4j.xmlutils.java:1191)在org.docx4j.xmlutils.getjaxbassociationsforxpath(xmlutils.java:1191)在org.docx4j.xmlutils.getjaxbassociationsforxpath(xmlutils.java:113)在an.java:1087)在org.apache.jsp.test_jsp._jspService(test_jsp.java:95)在org.apache.jasper.runtime.httpjspbase.service(httpjspbase.java:70)在javax.servlet.http.httpservlet.service在org.apache.jasper.servlet.jspServletWrapper.Service(jspServletWrapper.java:439)在org.apache.jasper.servlet.jspServlet.ServiceJSPSPFile(jspServlet.java:395)在org.apache.jasper.servlet.jspServlet.Service(jspServlet.java:339)在javax.servlet.http.httpServlet.Service(httpServlet.java:731)在在org.apache.tomcat.websocket.server.wsfilter.doFilter(wsfilter.java:208)在org.apache.catalina.core.applicationFilterChain.InternaldoFilter(applicationFilterChain.java:52)在org.apache.catalina.core.applicationFilterChain.InternaldoFilter(applicationFilterChain.java:241)在business.nocache.catalina.core.applicationFilterChain.doFilter.catalina.core.applicationFilterChain.doFilter(Applica在org.apache.catalina.core.standardWrapperValve.invoke(StandardWrapperValve.java:219)在org.apache.catalina.core.standardContextValve.invoke(StandardContextValve.java:110)在org.apache.catalina.authenticator.authenticator.authenticator.authenticatorbase.invoke(StandardContextValve.invoke(StandardContextValve.java:506),在ves.accesslogvalve.invoke(accesslogvalve.java:962)在org.apache.catalina.core.standardenginevalve.invoke(standardenginevalve.java:116)在org.apache.catalina.connector.coyoteadapter.service(coyoteadapter.java:445)在:318)在java.util.concurrent.threadpoolexecutor.runworker(threadpoolexecutor.java:1145)在java.util.concurrent.threadpoolexecutor$worker.run(threadpoolexecutor.java:615)在org.apache.tomcat.util.threads.taskthread$wrappingrunnable.run(taskthread.java:61)在java.lang.thread.run(thread.java:745)

我的word文件包含如下两行:你好,我的名字是ABCD。我喜欢我的工作。我被卡在这一点上从前7天,但无法解决这个问题。我还包括了不同的jar文件(Xalan、xml-apis-1.3.04、serializer-2.7.2),但运气不好。我使用docx4j-6.0.1.jar进行工作。谁能指导我解决这个问题。提前谢了。

共有1个答案

江志业
2023-03-14

适用于我(docx4j 6.0.1、Xalan 2.7.2、serializer 2.7.2)

我想您的类路径并不包含您所认为的罐子。

DefaulTerrorHandler是Xalan 2.7.2中的org.apache.xml.utils.DefaulTerrorHandler。

    java.lang.NoSuchMethodError: org.apache.xml.utils.DefaultErrorHandler.(Z)V 
at org.docx4j.org.apache.xalan.transformer.TransformerIdentityImpl.(TransformerIdentityImpl.java:1459) 
at org.docx4j.org.apache.xalan.transformer.TransformerIdentityImpl.(TransformerIdentityImpl.java:96)
 类似资料:
  • 我正在尝试使用docx4j API强制使用docx文件的权限。 文件有两个文档保护选项。

  • 我正在使用库python-docx解析docx文件。我需要阅读文档和段落的标题,但是我在文档中找不到任何关于文档标题的东西。有关于将标头写入新文件的文档,但没有关于读取标头的文档。有办法做到这一点吗?

  • 必须从文档中检索突出显示的数据。 这是我用来返回页面中的数据的方法,但没有得到用黄色标记的数据,只有那些数据被输入到输出中,而这些数据在word文档的表中没有提到。

  • 我想使用docx4j删除docx文件中的所有注释。 我可以使用如下所示的一段代码删除实际的注释,但我认为我也需要从主文档部分删除注释引用(否则文档已损坏),但我不知道如何做到这一点。 感谢您的指导! 我还在docx4j论坛上发布了这个问题:http://www.docx4java.org/forums/docx-java-f6/how-to-remove-all-comments-from-doc