Как я могу изменить выходной поток маршалинга JAXB, чтобы включить произвольный встроенный XML?

Я хотел бы изменить выходной поток для операции маршалинга 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";

}

Которые обычно превращаются в это:


  Something
  Something else

А что, если поле extraXml содержало некоторый дополнительный XML (произвольной сложности), который должен был быть включен в окончательный упорядоченный результат?

Скажем, extraXml содержит " Что-то лишнее ", я бы очень хотел решение, которое позволило бы мне упорядочить Продукт следующим образом (форматирование необязательно):


  Something
  
    Something extra
  

Я рассмотрел этот связанный вопрос , но он не дал того результата, который мне нужен, поскольку он больше ориентирован на общее изменение формата, чем на вставку DOM.

Свойство extraXml приведено только для иллюстрации, его можно пометить как @XmlTransient или в отдельный специализированный класс. Единственным критерием является то, что он может каким-то образом получить String , содержащий полностью произвольный XML-контент для добавления к индивидуальному упорядоченному выводу Product .

Я также должен упомянуть, что потребители вывода из этого могут анализировать произвольный контент удобным для них способом. Цель здесь - упростить обработку на стороне сервера.

Заранее благодарим за любую помощь, которую вы можете предложить.

5
задан Community 23 May 2017 в 12:26
поделиться