Бих искал да модифицирам изходния поток за 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>
Разгледах този свързан въпрос, но не не дава напълно резултата, който преследвам, тъй като изглежда по-скоро насочен към цялостна промяна на формата, отколкото към вмъкване на DOM.
Свойството extraXml
е само за илюстрация, може да бъде маркирано като @XmlTransient
или в отделен специализиран клас. Единственият критерий е, че по някакъв начин може да получи String
, съдържащо напълно произволно XML съдържание за добавяне към индивидуалния Product
маршален изход.
Трябва също така да спомена, че потребителите на изхода от това могат да анализират произволното съдържание по начин, който им е подходящ. Целта тук е да се опрости обработката от страната на сървъра.
Благодаря предварително за всяка помощ, която можете да предложите.