【问题标题】:Is possible in JAXB to filter out child elements with value of elements?在 JAXB 中是否可以过滤出具有元素值的子元素?
【发布时间】:2019-04-17 09:57:07
【问题描述】:

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

    如果你只想要一个部分,那么你可以使用像 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,因为它看起来很相似。

    【讨论】:

    • 一个 DOM 解析器创建了一个完整的 DOM,你说:I do not want to map the whole structure.
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-25
    • 2012-08-03
    • 1970-01-01
    相关资源
    最近更新 更多