简体   繁体   English

使用Docx4j从Docx文件读取文本

[英]Reading text from Docx File using Docx4j

Hi I am trying to read data from one Docx file using Docx4j, so I can insert it into another file. 嗨,我正在尝试使用Docx4j从一个Docx文件读取数据,因此我可以将其插入到另一个文件中。 My code is as follows: 我的代码如下:

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());
}

The code works fine. 该代码工作正常。 But as soon as I insert following line in the end of above stated method, the method started generating exception: 但是,只要在上述方法的末尾插入以下行,该方法就会开始生成异常:

List<Object> jAXBNodesViaXPath = mainDocumentPart.getJAXBNodesViaXPath("//w:t", true);

The exception which I am facing is as follows: 我面临的异常如下:

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 at org.docx4j.org.apache.xalan.transformer.TransformerIdentityImpl.(TransformerIdentityImpl.java:1459) at org.docx4j.org.apache.xalan.transformer.TransformerIdentityImpl.(TransformerIdentityImpl.java:96) at org.docx4j.utils.XmlSerializerUtil.serialize(XmlSerializerUtil.java:18) at org.docx4j.XmlUtils.w3CDomNodeToString(XmlUtils.java:833) at org.docx4j.XmlUtils.xpath(XmlUtils.java:1206) at org.docx4j.XmlUtils.xpath(XmlUtils.java:1200) at org.docx4j.XmlUtils.getJAXBAssociationsForXPath(XmlUtils.java:1191) at org.docx4j.XmlUtils.getJAXBNodesViaXPath(XmlUtils.java:1133) at org.docx4j.openpackaging.parts.JaxbXmlPartXPathAware.getJAXBNodesViaXPath(JaxbXmlPartXPathAware.java:190) at Business.SelectionBean.getTextFromOtherFile(SelectionBean.java:1087) at org.apache.jsp.test_jsp._jspService(test_jsp.java:95) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) at javax.servlet.http.HttpServlet.service(Ht 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 org.docx4j.utils.XmlSerializerUtil.serialize(XmlSerializerUtil.java:18)上的.xalan.transformer.TransformerIdentityImpl。(TransformerIdentityImpl.java:96),在org.docx4j.XmlUtils.w3CDomNodesToString(java.x。 org.docx4j.XmlUtils.xpath(XmlUtils.java:1206).org.docx4j.XmlUtils.xpath(XmlUtils.java:1200)处的XmlUtils.xpath(XmlUtils.java:1200)。在org.docx4j.openpackaging.parts.JaxbXmlPartXPathAware.getJAXBNodesViaXPath(JmlbXmlPartXPathAware.java:190)处的XmlUtils.java:1133)在org.ap_js.test.jsp.jsp.jsp。 .java:95),位于org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70),位于javax.servlet.http.HttpServlet.service(Ht tpServlet.java:731) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:439) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:395) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:339) at javax.servlet.http.HttpServlet.service(HttpServlet.java:731) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at Business.NoCacheFilter.doFilter(NoCacheFilter.java:36) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(Applica org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:439)处的tpServlet.java:731)org.apache.jasper处的org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:395)处的tpServlet.java:731)位于org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)的javax.servlet.http.HttpServlet.service(HttpServlet.java:731)的.servlet.JspServlet.service(JspServlet.java:339) org.apache.catcatina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)位于org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)位于org.apache.catalina.core.ApplicationFilterChain。 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)的internalDoFilter(ApplicationFilterChain.java:241)org.apache.catalina.core.ApplicationFilterChain的Business.NoCacheFilter.doFilter(NoCacheFilter.java:36) org.apache.catalina.core.ApplicationFilterChain.doFilter(Applica)上的.internalDoFilter(ApplicationFilterChain.java:241) tionFilterChain.java:208) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:110) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:506) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:962) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:445) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1115) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:637) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:318) at java.util.concurrent.Threa org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219)的tionFilterChain.java:208)(org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:110)的org.apache.catalina org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169)上的.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:506)在org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103 )的org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)的org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)的org.apache.catalina.connector.CoyoteAdapter。 org.apache.coyote.http11.service(CoyoteAdapter.java:445)在org.apache.coyote.AbstractProtocol $ AbstractConnectionHandler.process(AbstractProtocol.java:637)在org.apache.coyote.AbstractProtocol $ AbstractConnectionHandler.process(AbstractProtocol.java:637) .tomcat.util.net.JIoEndpoint $ SocketProcessor.run(JIoEndpoint.java:318)位于java.util.concurrent.Threa dPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Thread.java:745) org.apache.tomcat.util.threads.TaskThread $ WrappingRunnable.run(TaskThread.java :)上的java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:615)上的dPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 61)在java.lang.Thread.run(Thread.java:745)

My word file contains two lines which are as follows: Hello My name is abcd. 我的Word文件包含两行,如下所示:您好我的名字是abcd。 I love my work. 我爱我的工作。 I am stuck at this point from previous 7 days but unable to resolve this problem. 从之前的7天开始,我一直处于这种状态,但无法解决此问题。 I also included different jar files (Xalan, xml-apis-1.3.04, serializer-2.7.2) but no luck. 我还包含了不同的jar文件(Xalan,xml-apis-1.3.04,serializer-2.7.2),但是没有运气。 I am using docx4j-6.0.1.jar for my work. 我在工作中使用docx4j-6.0.1.jar。 Can anybody please guide me for this problem. 有人可以指导我解决这个问题吗? Thanks in advance. 提前致谢。

Works for me (docx4j 6.0.1, Xalan 2.7.2, serializer 2.7.2) 适用于我(docx4j 6.0.1,Xalan 2.7.2,序列化器2.7.2)

I guess your classpath doesn't contain the jars you think it does. 我想您的类路径中没有您认为包含的jar。

org.apache.xml.utils.DefaultErrorHandler is in Xalan 2.7.2. org.apache.xml.utils.DefaultErrorHandler在Xalan 2.7.2中。

Also, the line numbers in your stack trace: 另外,堆栈跟踪中的行号:

    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)

don't match the docx4j source code, so that's strange. 与docx4j源代码不匹配,所以很奇怪。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM