微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

XML-BEANS 编译架构:找不到编译架构资源

如何解决XML-BEANS 编译架构:找不到编译架构资源

我尝试验证我的 XSSFWorkbook 的对象:

boolean validate = processedSheet.getCTWorksheet().validate();

但出现错误

    XML-BEANS compiled schema: Could not locate compiled schema resource org/apache/poi/schemas/ooxml/system/ooxml/stsheetviewtype988dtype.xsb (org.apache.poi.schemas.ooxml.system.ooxml.stsheetviewtype988dtype) - code 0
org.apache.xmlbeans.SchemaTypeLoaderException: XML-BEANS compiled schema: Could not locate compiled schema resource org/apache/poi/schemas/ooxml/system/ooxml/stsheetviewtype988dtype.xsb (org.apache.poi.schemas.ooxml.system.ooxml.stsheetviewtype988dtype) - code 0
    at org.apache.xmlbeans.impl.schema.SchemaTypeSystemImpl$XsbReader.<init>(SchemaTypeSystemImpl.java:1315)
    at org.apache.xmlbeans.impl.schema.SchemaTypeSystemImpl.resolveHandle(SchemaTypeSystemImpl.java:3138)
    at org.apache.xmlbeans.SchemaComponent$Ref.getComponent(SchemaComponent.java:113)
    at org.apache.xmlbeans.SchemaType$Ref.get(SchemaType.java:1072)
    at org.apache.xmlbeans.impl.schema.SchemaLocalAttributeImpl.getType(SchemaLocalAttributeImpl.java:102)
    at org.apache.xmlbeans.impl.validator.Validator.endAttrsEvent(Validator.java:611)
    at org.apache.xmlbeans.impl.validator.Validator.nextEvent(Validator.java:164)
    at org.apache.xmlbeans.impl.store.Validate.doAttrs(Validate.java:124)
    at org.apache.xmlbeans.impl.store.Validate.process(Validate.java:80)
    at org.apache.xmlbeans.impl.store.Validate.<init>(Validate.java:39)
    at org.apache.xmlbeans.impl.store.Xobj.validate(Xobj.java:1785)
    at org.apache.xmlbeans.impl.values.XmlObjectBase.validate(XmlObjectBase.java:407)
    at org.apache.xmlbeans.impl.values.XmlObjectBase.validate(XmlObjectBase.java:380)

这个完整的xmlText:

<xml-fragment xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:main="http://schemas.openxmlformats.org/spreadsheetml/2006/main">
  <main:dimension ref="A1:C6"/>
  <main:sheetViews>
    <main:sheetView workbookViewId="0" tabSelected="true"/>
  </main:sheetViews>
  <main:sheetFormatPr defaultRowHeight="15.0"/>
  <main:cols/>
  <main:sheetData>
    <main:row r="1">
      <main:c r="A1" t="s">
        <main:v>3</main:v>
      </main:c>
      <main:c r="B1" t="s">
        <main:v>9</main:v>
      </main:c>
    </main:row>
    <main:row r="2">
      <main:c r="A2" t="s">
        <main:v>4</main:v>
      </main:c>
      <main:c r="B2" t="n">
        <main:v>1.0</main:v>
      </main:c>
      <main:c r="C2"/>
    </main:row>
    <main:row r="3">
      <main:c r="A3" t="s">
        <main:v>5</main:v>
      </main:c>
      <main:c r="B3" t="n">
        <main:v>2.0</main:v>
      </main:c>
    </main:row>
    <main:row r="4">
      <main:c r="A4" t="s">
        <main:v>6</main:v>
      </main:c>
      <main:c r="B4" t="n">
        <main:v>3.0</main:v>
      </main:c>
    </main:row>
    <main:row r="5">
      <main:c r="A5" t="s">
        <main:v>7</main:v>
      </main:c>
      <main:c r="B5" t="n">
        <main:v>4.0</main:v>
      </main:c>
    </main:row>
    <main:row r="6">
      <main:c r="A6" t="s">
        <main:v>8</main:v>
      </main:c>
      <main:c r="B6" t="n">
        <main:v>5.0</main:v>
      </main:c>
    </main:row>
  </main:sheetData>
  <main:pageMargins bottom="0.75" footer="0.3" header="0.3" left="0.7" right="0.7" top="0.75"/>
  <main:drawing r:id="rId1"/>
</xml-fragment>

但如果我只验证行,它运行良好:

for (int rowId = processedSheet.getFirstRowNum(); rowId <= processedSheet.getLastRowNum(); rowId++) {
        XSSFRow row = sheet.getRow(rowId);
        if (row != null) {
             boolean validate = row.getCTRow().validate();
             System.err.println(validate);
        }
}

我使用这个依赖项:

implementation 'org.apache.poi:poi:5.0.0'
implementation 'org.apache.poi:poi-ooxml:5.0.0'
implementation("org.apache.commons:commons-lang3:3.8.1")
implementation 'org.apache.commons:commons-pool2:2.8.0'

它也不适用于 XWPFDocument...我尝试使用 XmlObject.Factory.parse 但总是有一个错误消息 error: cvc-elt.1: Invalid type

XmlObject xmlObject = XmlObject.Factory.parse(processedSheet.getCTWorksheet().getDomNode());
List<XmlError> errors = new LinkedList<>();
XmlOptions xmlOptions = new XmlOptions();
xmlOptions.setErrorListener(errors);
xmlObject.validate(xmlOptions);

for (XmlError error : errors) {
       System.err.println(error);
}

        

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?