在JAXB中可以过滤出具有元素值的子元素吗?

问题描述 投票:0回答:1

如何获取具有我指定的元素值的元素?例如,我只需要map position元素,其中element id = 2.这是我的xml结构:

<table>
   <position>
       <id>1</id>
   </position>

    <position>
       <id>2</id>
   </position>

    <position>
       <id>3</id>
   </position>
</table>

我知道我可以用这种方式将JAXB整个文件映射到两个类中:

@Getter
@Setter
@XmlRootElement(name = "table")
@XmlAccessorType(XmlAccessType.FIELD)
public class Table {

    @XmlElement(name = "position")
    private List<TableElement> tableElementList = new ArrayList<>();
}


@Getter
@Setter
@XmlRootElement(name = "position")
@XmlAccessorType(XmlAccessType.FIELD)
public class TableElement {

    @XmlElement(name = "id")
    private String code;
}

这是问题所在。我不想映射整个结构(我的文件最多可以有300个元素),但只有符合条件的元素(id = 2)。

java xml parsing xml-parsing jaxb
1个回答
0
投票

如果你只想要一个部分,那么你可以使用像StAX这样的流解析器:https://docs.oracle.com/javase/tutorial/jaxp/stax/example.html#bnbgh

另外你应该看看In JAXB or Xstream is it possible to Filter out certain Child Elements on Type/value during unmarshall它看起来很相似。

© www.soinside.com 2019 - 2024. All rights reserved.