Если ваш объект Java имеет свойство, содержащее часть XML, рассмотрите его как заданный тип XML (если вы знаете предполагаемую схему этого фрагмента XML) или объявите его как «любой» элемент или «any», поэтому он будет сопоставлен с структурой DOM в Java, которая может быть рассмотрена структурно корректно в вашем Java-коде.
Если вы все еще хотите просто передать XML-данные в строку, которую я НЕ рекомендую, представление, созданное маршаллером, возможно, является единственно приемлемым и правильным. После unmarshalling вы вернете свой фрагмент XML точно так же, как вы ввели его выше в своем примере, и вы можете иметь дело с ним как строку так же, как и до маршаллинга.
Я бы рекомендовал вам определить схему фрагмента XML в XSD, а затем использовать JAXB «XML-to-Java compiler» (XJC) для генерации кода Java для него, что легко можно сделать автоматически, если вы используйте maven или аналогичную систему сборки. Затем вы должны добавить соответствующие аннотации к вашему классу Java, который содержит это свойство, и ссылаться на сгенерированный класс как тип вашего свойства, который затем даст вам чистый способ маршалировать и развязать все как истинную структуру XML (см. пример ниже).
Еще лучше определить как можно больше из ваших классов данных в XSD и использовать генерацию кода на всем протяжении. Это значительно облегчит многое.
Пример: XSD определение значения для свойства "особенность"
<xs:element name="feature">
<xs:complexType>
<xs:sequence>
<xs:element name="feat" type="string"/>
<!-- additional possibilities/elements/whatever... -->
</xs:sequence>
</xs:complexType>
</xs:element>
Тогда в классе Java, сделайте следующее:
@XmlRootElement
public class ClassWithFeature {
private Feat feature;
public Feat getFeature() { return feature; }
public void setFeature(final Feat feature) { this.feature = feature; }
}
Затем инициализировать его следующим образом:
Feature feat = new Feature();
feat.setFeat("T12");
myOb.setFeature(feat);
Есть плагины XJC, чтобы сделать эту инициализацию более удобной т, как Fluent-Api или шаблон строитель: jaxb-rich-contract-plugin
После сортировочных, то XML будет выглядеть примерно так:
<ClassWithFeature>
<feature>
<feat>T12</feat>
</feature>
</ClassWithFeature>
Что, вероятно, что вы хотите ...
вам нужно иметь фактический элемент (например, ' T12 ') или CDATA вариант Do: ( T12]]> как ' ') –
ljgw
Можете ли вы попробовать предложения от http://stackoverflow.com/questions/1506663/can-i-force-jaxb-not-to-convert-into-quot-for-example-when-marshalling-to и http://stackoverflow.com/ вопросы/3289036/как к предотвращать-JAXB-маскирование-а-строка – mdp