如何使用 commons-digester 仅解析 XML 中重复元素中的第一个元素?

How can I parse only the 1st element from a repetitive elements in a XML using commons-digester?

样本XML:

<parent>
  <child>1</child>
  <child>2</child>
  <child>3</child>
</parent>

我正在尝试使用 commons-digester 注释来解析 xml。我只想获取 xml 的第一个元素。但它总是从重复元素中获取最后一个元素。你能帮帮我吗?

这里是示例代码:

@ObjectCreate(pattern = "parent")
public class Parent {

   @BeanPropertySetter(pattern = "parent/child")
   private String child;

   public String getChild() {
       return child;
   }

   public void setChild(String child) {
       this.child= child;
   }
}

默认情况下,Digester 将按顺序为每个子元素触发规则,这就是最后一个获胜的原因。

可以使用自定义规则做一些事情,但在您的情况下,最简单的解决方案似乎是更新 setter 以忽略已设置的子项:

public void setChild(String child) {
    if (this.child == null) {
        this.child = child;
    }
}

HTH