我的xml文件如下:

<ExternalCases>
    <ignoreTag>
        <CashLess>
            <caseType>CashLess</caseType>
            <claimNo>9</claimNo>
            <status>Open</status>
        </CashLess>
    </ignoreTag>
</ExternalCases>

我想在我的Unmarshaller进程中忽略<ignoreTag>,并且想要<CashLess>标记。

我的 class 如下:
@XmlRootElement(name="ExternalCases")
public class ExternalCases {

    List<CashLess> cashLess;

    @XmlElement(name="CashLess", required=false)
    public List<CashLess> getCashLess() {
        return cashLess;
    }
    public void setCashLess(List<CashLess> cashLess) {
        this.cashLess = cashLess;
    }
}

谢谢。

最佳答案

忽略ignoreTag
您可以创建一个StAX过滤的XMLStreamReader,并让JAXB取消编组以忽略一个或多个XML元素。

  • http://docs.oracle.com/javase/7/docs/api/javax/xml/stream/XMLInputFactory.html#createFilteredReader%28javax.xml.stream.XMLStreamReader,%20javax.xml.stream.StreamFilter%29

  • 以下是我回答类似问题的完整示例的链接:
  • JAXB filtered parsing

  • 如果ignoreTag是分组元素

    相反,如果ignoreTag是集合的分组元素,则可以将其映射为:
    @XmlElementWrapper(name="ignoreTag")
    @XmlElement(name="CashLess", required=false)
    public List<CashLess> getCashLess() {
        return cashLess;
    

    09-13 06:31