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

使用apache poi索引. docx类型的文档

岑彬炳
2023-03-14

我正在实现一个用于阅读的索引器。使用ApachePOI插件的docx类型文档。我所做的代码如下

XWPFDocument doc = new XWPFDocument(new ByteArrayInputStream(fileData.data));
XWPFWordExtractor msWord2007Extractor = new XWPFWordExtractor(doc);
                wordText = msWord2007Extractor.getText();

当我从第1行执行此操作时,我会低于异常。

组织。阿帕奇。xmlbeans。SchemaTypeLoaderException:无法解析句柄_XY_Q=space |R的类型=space@httphttp://www.w3。org/XML/1998/namespace(schemaorg_apache_xmlbeans.system.sE130CAA0A01A7CDE5A2B4FEB8B311707.cttext7f5btype)——代码13位于org。阿帕奇。xmlbeans。impl。模式。SchemaTypeSystemImpl$XsbReader。org上的readHandle(SchemaTypeSystemImpl.java:2021)。阿帕奇。xmlbeans。impl。模式。SchemaTypeSystemImpl$XsbReader。readTypeRef(SchemaTypeSystemImpl.java:2095)位于org。阿帕奇。xmlbeans。impl。模式。SchemaTypeSystemImpl$XsbReader。org上的loadAttribute(SchemaTypeSystemImpl.java:2922)。阿帕奇。xmlbeans。impl。模式。SchemaTypeSystemImpl$XsbReader。readAttributeData(SchemaTypeSystemImpl.java:2914)位于org。阿帕奇。xmlbeans。impl。模式。SchemaTypeSystemImpl$XsbReader。finishLoadingType(SchemaTypeSystemImpl.java:2531)位于org。阿帕奇。xmlbeans。impl。模式。SchemaTypeSystemImpl。org上的resolveHandle(SchemaTypeSystemImpl.java:3507)。阿帕奇。xmlbeans。SchemaComponent$Ref.getComponent(SchemaComponent.java:104)位于org。阿帕奇。xmlbeans。SchemaType$Ref.get(SchemaType.java:872)位于org。阿帕奇。xmlbeans。impl。模式。SchemaPropertyImpl。getType(SchemaPropertyImpl.java:92)位于org。阿帕奇。xmlbeans。impl。模式。SchemaTypeImpl。org上的createElementType(schematypeempl.java:965)。阿帕奇。xmlbeans。impl。价值观XmlObjectBase。在org上创建_元素_用户(XmlObjectBase.java:893)。阿帕奇。xmlbeans。impl。百货商店Xobj。getUser(Xobj.java:1657)位于org。阿帕奇。xmlbeans。impl。百货商店Cur。getUser(Cur.java:2654)位于org。阿帕奇。xmlbeans。impl。百货商店Cur。org上的getObject(Cur.java:2647)。阿帕奇。xmlbeans。impl。百货商店光标_org上的getObject(Cursor.java:995)。阿帕奇。xmlbeans。impl。百货商店光标。org上的getObject(Cursor.java:2904)。阿帕奇。波伊。xwpf。用户模型。XWPFParagraph。(XWPFParagraph.java:90)在org上。阿帕奇。波伊。xwpf。用户模型。XWPFDocument。onDocumentRead(XWPFDocument.java:146)位于org。阿帕奇。波伊。这是一份完整的文件。在org上加载(POIXMLDocument.java:159)。阿帕奇。波伊。xwpf。用户模型。XWPFDocument。(XWPFDocument.java:123)在org上。wso2。碳注册处。样品。汉德勒。MSWordIndexer。getIndexedDocument(MSWordIndexer.java:42)位于org。wso2。碳注册处。索引。索尔。独行侠。indexDocument(SolrClient.java:178)位于org。wso2。碳注册处。索引。AsyncIndexer$IndexingTask。doWork(AsyncIndexer.java:203)位于org。wso2。碳注册处。索引。AsyncIndexer$IndexingTask。在java上运行(AsyncIndexer.java:189)。util。同时发生的遗嘱执行人$runnableapter。在java上调用(Executors.java:471)。util。同时发生的未来任务。在java上运行(FutureTask.java:262)。util。同时发生的线程池执行器。java上的runWorker(ThreadPoolExecutor.java:1145)。util。同时发生的ThreadPoolExecutor$Worker。在java上运行(ThreadPoolExecutor.java:615)。朗。丝线。运行(Thread.java:745)

当文档包含一些值时,就会发生这种情况。对于一个空文档来说,这是很好的。

共有1个答案

邬令
2023-03-14

在Weblogic中运行应用程序时,我也遇到了同样的异常。poi ooxml模式在ear中打包为applib,但问题仍然没有消失。

我在Alfresco Jira中找到了解决方案,我将其发布在这里以供将来参考。

解决方案是添加提示,让类加载器更喜欢应用程序包:

<prefer-application-packages>
    <package-name>schemaorg_apache_xmlbeans.system.sXMLCONFIG.*</package-name>
    <package-name>schemaorg_apache_xmlbeans.system.sXMLLANG.*</package-name>
    <package-name>schemaorg_apache_xmlbeans.system.sXMLSCHEMA.*</package-name>
    <package-name>schemaorg_apache_xmlbeans.system.sXMLTOOLS.*</package-name>
</prefer-application-packages>
 类似资料:
  • 我正在尝试创建一个包含多列的word文档。这样做(而不是使用表)的原因是,数据将跨越多个页面,在添加到新页面之前,我只能用列填充整个页面。 可以用ApachePOI实现吗?谢谢

  • 我将此表数据导入phpmyadmin: 我看到了这个错误: -- --表 -- 更改表添加主键(),添加FULLTEXT KEY(),添加FULLTEXT KEY();MySQL说:文档 #1214-使用的表类型不支持全文索引 在localhost中,我为title和long_desc添加了,这样就行了,但当我导入时,我看到了这个错误。如何修复此错误?

  • 下面是一个常见的 JavaScript 函数,实现从一个对象中选取指定属性,得到它们的属性值: function pluck(o, names) { return names.map(n => o[n]) } 实现这样一个函数的类型定义要满足: 数组参数 names 中的元素,只能是对象 o 身上有的属性。 返回类型取决于参数 o 身上属性值的类型。 我们可以通过索引类型实现这样的类型定义。

  • PostgreSQL 提供了多种索引类型:B 树、hash、GiST 和 GIN,每种索引类型都有适合的应用场景,可以根据场景选择合适的索引以提高效率。 B 树 B 树适合相等判断和有序的区间查询,通常来说,经常使用这些查询时推荐使用 B 树索引: <、>、<=、>= 以及 =。 此外,对于判断字符串开头的 LIKE 和 ~ 查询也可以考虑使用 B 树索引。比如: col LIKE 'foo%'

  • 问题内容: “使用的表类型不支持SPATIAL索引” 当我运行包含“ contains”关键字的查询时,我在MySQL中收到此错误。如何使表支持“空间索引”。查询是 从包含(列,“ 1”)的表中选择* 问题答案: Mysql仅通过* .myisam表(即ISAM引擎)支持空间索引。链接:http://dev.mysql.com/doc/refman/5.0/en/creating-spatial-

  • 我无法使用ApachePOI删除docx文件中的所有注释。有没有其他方法可以使用docx4j api删除注释?