1

我正在尝试使用 apache-commons-digester 3 将 XML 加载到对象中。我面临的问题是某些标签具有我不感兴趣的属性。但是,如果我使用<set-properties-rule>规则,它会尝试将所有属性加载到对象属性中,并在发现某些属性没有匹配的属性时失败. 如何排除这些属性?我正在寻找类似的东西<set-properties-rule exclude="/xmlns:xsi*"/>

4

2 回答 2

1

我认为您正在寻找的是忽略规则。我认为这是在某些 3.x 版本中添加的。

<set-properties-rule>   
    <ignore attr-name="whatever" />
    <alias attr-name="surname" prop-name="lastname" />
</set-properties-rule>
于 2012-06-27T19:37:22.620 回答
0

忽略元素不在消化器库中嵌入的 DTD 中,这会在运行时导致一些令人讨厌的异常。另一种方法是使用别名而不指定属性值,如下例所示:

<set-properties-rule>
    <alias attr-name="whatever" />
    <alias attr-name="surname" prop-name="lastname" />
</set-properties-rule>

在上面的例子中,属性“whatever”被忽略了。

SetPropertiesRule 类的文档说:

如果属性名称为 null 或属性名称没有匹配的属性名称,则表示应忽略该属性。

很抱歉这个迟到的答案,但我刚刚在我的项目中遇到了这个问题并找到了这个解决方案。它对我来说非常好用(我正在使用digester3-3.2)。

于 2015-10-23T14:13:57.757 回答