Jaxb: сгенерированный файл игнорирует остальные смешанные типы, если в начале указан PCDATA - PullRequest
0 голосов
/ 03 августа 2020

Получаем ответ API в формате xml, он читается с помощью jaxb unmarshaller. Модели java для этих элементов xml генерируются с использованием dtd и jaxb в отдельном проекте.

Существует ситуация, когда содержимое xml (ответ API) может иметь 0 или более случаев эти теги случайным образом <b> или <i> вместе с текстом родительского тега.

что-то вроде:

<Title>This is a <i>dummy</i> statement.</Title>

Этот тип был определен в dtd следующим образом:

<!ELEMENT   Title (#PCDATA|b|i)*>

Я ожидал, что эквивалентное поле члена в сгенерированном классе будет примерно таким:

@XmlElements({
    @XmlElement(name = "b", type = B.class),
    @XmlElement(name = "i", type = I.class)
})
protected List<java.lang.Object> bOrI;

Таким образом, список может содержать строку и теги.

Но сгенерированный класс имеет только строку, из-за которой это поле не читается должным образом. Читается только текст после окончания внутреннего тега, например, «оператор». в приведенном выше примере.

Пожалуйста, дайте мне знать, есть ли способ обхода или лучший способ кодирования для этой ситуации.

...