我想用 xsd 檔案驗證生成的 xml。但我收到以下錯誤訊息。
org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is java.lang.NoClassDefFoundError: com/ibm/icu/text/UTF16
這是我的代碼:
public void validateAgainstXSD(File xml) {
try {
SchemaFactory factory = SchemaFactory.newInstance("http://www.w3.org/XML/XMLSchema/v1.1");
Schema schema = factory.newSchema(new File(xsdFilepath));
Validator validator = schema.newValidator();
validator.validate(new StreamSource(xml));
System.out.println("success");
} catch (Exception ex) {
ex.getMessage();
}
}
錯誤訊息在以下行中:
validator.validate(new StreamSource(xml));
有誰知道為什么會這樣?成功驗證的解決方案是什么?我真的需要你的幫助,謝謝。
最后我找到了錯誤所在。錯誤出現在以下 XSD 中:
<xs:simpleType name="nameNType">
<xs:restriction base="xs:string">
<xs:assertion test="string-length($value) <= 65"/>
</xs:restriction>
</xs:simpleType>
如果我對上面的代碼片段進行評論,它已經成功驗證,并且沒有出現如上的錯誤訊息。
另一個問題,我仍然可以使用 xsd 代碼片段的格式是什么?如何將其更改為 UTF-8?
uj5u.com熱心網友回復:
找不到課程com/ibm/icu/text/UTF16表明兩件事:
- 你的類路徑上沒有那個類。
- 決議器試圖決議認為 xsd 或 XML 正在使用
UTF-16字符集。
所以這留下了一些解決方案
要修復 1,您可以找到一個帶有字符集類的 jar,并將其包含在您的類路徑中。這可能有效,但它不是我的第一選擇。
要修復 2,您需要了解它為什么要嘗試使用uft-16. 如果這不正確,您可以在讀取檔案時指定另一組。此外,您可能想調查com/ibm/icu/text/UTF16指定類的位置,并可能指定不同的字符集類。
通常,我確保我加載的所有檔案都在 中utf-8,utf-8在讀取期間指定,并在系統級別指定。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/492124.html
上一篇:選擇匹配名稱的XML節點
下一篇:Python XML檔案
