【问题标题】:Jaxb not throwing exception when @XmlIDREF ref not found未找到 @XmlIDREF 引用时,Jaxb 未引发异常
【发布时间】:2015-03-09 10:35:09
【问题描述】:

我有以下 XML:

  <right id="RIGHT1"/>

  <role name="User">
   <right>RIGHT1</right>
   <right>RIGHT_NOT_EXISTING</right>
  </role>

这里是映射:

@XmlAccessorType(XmlAccessType.FIELD)
public class Role {

    @XmlAttribute
    private String name;

    @XmlIDREF
    @XmlElement(name = "right")
    private List<Right> rights;
}

基本上它可以正常工作,正确找到引用的现有权限。问题是,我在 RIGHT_NOT_EXISTING 参考中做了一个明显的错字。我希望,我得到一个异常说“没有找到正确的 RIGHT_NOT_EXISTING”,但它会默默地忽略那个。 是否有一些配置可以获取该异常?

【问题讨论】:

    标签: java xml-parsing jaxb


    【解决方案1】:

    您可以尝试在Unmarshaller 上覆盖ValidationEventHandler 的默认实例,以查看是否获得了所需的行为。最安全的做法是在Unmarshaller 上设置Schema 的实例以启用验证。

    【讨论】:

    • 我没想到这会是一个不常见的问题......我认为错误的引用会使整个 XML 完全无效,默认情况下应该被拒绝。 :-(
    • @Tomasz - 我们在开发 JAXB (JSR-222) 规范时学到的一件事是,很多糟糕的 XML 正在被传递。如果默认情况下这会导致 XML 被拒绝,那么什么都不会得到处理:)。
    猜你喜欢
    • 1970-01-01
    • 2017-10-15
    • 1970-01-01
    • 2012-10-10
    • 1970-01-01
    • 2019-03-02
    • 1970-01-01
    • 2014-01-03
    • 1970-01-01
    相关资源
    最近更新 更多