在JAXB中可以用元素的值过滤掉子元素吗?

时间:2019-04-17 09:57:08

标签: java xml parsing xml-parsing jaxb

如何获取具有我指定元素值的元素? 例如,我只需要元素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)的元素。

1 个答案:

答案 0 :(得分: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,因为它看起来很相似。