我正在尝试使用apache-commons-digester 3将XML加载到对象中。我面临的问题是某些标签具有我不感兴趣的属性。但是如果我使用<set-properties-rule>
规则,它会尝试将所有属性加载到对象属性中,并在发现某些属性时失败没有匹配的属性。如何排除这些属性?我正在寻找像<set-properties-rule exclude="/xmlns:xsi*"/>
答案 0 :(得分:1)
我认为你要找的是忽略规则。我认为这是在某些3.x版本上添加的。
<set-properties-rule>
<ignore attr-name="whatever" />
<alias attr-name="surname" prop-name="lastname" />
</set-properties-rule>
答案 1 :(得分:0)
ignore元素不在嵌入在digester库中的DTD中,这在运行时会导致一些讨厌的异常。另一种方法是使用别名而不指定属性值,如下例所示:
<set-properties-rule>
<alias attr-name="whatever" />
<alias attr-name="surname" prop-name="lastname" />
</set-properties-rule>
在上面的示例中,忽略属性“whatever”。
SetPropertiesRule类的文档说:
如果属性名称为null或属性名称没有匹配的属性名称,则表示应忽略该属性。
很抱歉这个迟到的答案,但我刚刚在我的项目中遇到了这个问题,并找到了这个解决方案。它对我来说非常好用(我正在使用digester3-3.2)。