如何解决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 举报,一经查实,本站将立刻删除。