Возможно ли в JAXB отфильтровывать дочерние элементы по значению элементов? - PullRequest
0 голосов
/ 17 апреля 2019

Как мне добраться до элементов, которые имеют значение элемента, указанного мной? Например, мне нужен только элемент позиции карты, где элемент 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 голосов
/ 17 апреля 2019

Если вам нужна только часть, то вы можете использовать потоковый анализатор, такой как StAX: https://docs.oracle.com/javase/tutorial/jaxp/stax/example.html#bnbgh

Также вы должны взглянуть на В JAXB или Xstream возможно ли отфильтровать определенного потомкаЭлементы типа / значения во время unmarshall для него выглядят аналогично.

...