使用commons-digester XML规则时,如何排除我不需要的XML的某些属性?

时间:2012-06-23 13:10:19

标签: java xml xml-serialization xml-parsing apache-commons-digester

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

这样的东西

2 个答案:

答案 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)。