顯然在JAXB的第2版中 - 驗證器類已被棄用 - 這是否意味着編組器會自動驗證您的XML?如果是這樣,它似乎並沒有抱怨我正在形成的一些不正確的XML!任何人都可以給我一些建議,關於如何驗證編組XML以確保其符合XSD架構。是否可以使用JAXB 2.0驗證編組的XML?
非常感謝。
顯然在JAXB的第2版中 - 驗證器類已被棄用 - 這是否意味着編組器會自動驗證您的XML?如果是這樣,它似乎並沒有抱怨我正在形成的一些不正確的XML!任何人都可以給我一些建議,關於如何驗證編組XML以確保其符合XSD架構。是否可以使用JAXB 2.0驗證編組的XML?
非常感謝。
JAXB 2.0通過使用JAXP 1.3模式驗證框架擴展了驗證功能。
當你做之前:
unmarshaller.setValidating(true);
現在你需要做的:
SchemaFactory sf = SchemaFactory.newInstance(
javax.xml.XMLConstants.W3C_XML_SCHEMA_NS_URI);
Schema schema = sf.newSchema(new File("myschema.xsd"));
unmarshaller.setSchema(schema);
如果傳遞null到setSchema
,它禁用驗證。
請檢查this reference。
如果你正在尋找驗證Java對象生成根據模式是有效的XML,看看JAXB的驗證項目:
https://jaxb-verification.dev.java.net/
這是一個JAXB RI插件XJC將產生XML模式的ObjectVerifier實現。這避免了爲了驗證XML而必須編組Java對象。
你把一個MARSHALLER相同的代碼 - 這個代碼看起來像是一個UNMARSHALLER ... – Vidar 2009-04-30 10:01:32