如何获取具有我指定的元素值的元素?例如,我只需要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)。
如果你只想要一个部分,那么你可以使用像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它看起来很相似。