Я хотел бы изменить выходной поток для операции сортировки JAXB, чтобы включить некоторый произвольный XML. Вот пример, чтобы прояснить ситуацию.
У меня есть произвольный объект домена Product
с аннотациями JAXB, которые в настоящее время выглядят так:
@XmlRootElement(name="Product")
public class Product {
@XmlElement(name="CommonProperty")
private String commonProperty="Something";
@XmlElement(name="ExtraXml")
private String extraXml="Something extra";
}
Который обычно маршалирует в это:
<Product>
<CommonProperty>Something</CommonProperty>
<ExtraXml>Something else</ExtraXml>
</Product>
А что, если поле extraXml
содержит некоторый дополнительный XML (произвольной сложности), который должен быть включен в окончательный обработанный результат?
Скажем, extraXml
содержит "<abc><def>Something extra</def></abc>
", мне бы очень хотелось решение, которое позволило бы мне маршалировать Product
следующим образом (форматирование необязательно):
<Product>
<CommonProperty>Something</CommonProperty>
<abc>
<def>Something extra</def>
</abc>
</Product>
Я просмотрел этот связанный вопрос, но он не t вполне дает результат, который мне нужен, поскольку он кажется более ориентированным на общее изменение формата, а не на вставку DOM.
Свойство extraXml
здесь просто для иллюстрации, оно может быть помечено как @XmlTransient
или в один специализированный класс. Единственным критерием является то, что он может каким-то образом получить String
, содержащий совершенно произвольный XML-контент, для добавления к отдельному Product
маршалированному выводу.
Я также должен упомянуть, что потребители выходных данных могут анализировать произвольный контент удобным для них способом. Цель здесь — упростить обработку на стороне сервера.
Заранее благодарим за любую помощь, которую вы можете предложить.