UPDATE
На основании ваших комментариев:
Привет .. Спасибо за ваш ответ .. @Blaise
Doughan & @CoolBeans в вышеупомянутом
пример, который вы приводите, вы упомянули
Строковое значение, но по моему
xml, вместо "String Value" там
будет другой XML внутри него. лайк
Ричард
и мне нужно
"Ричард" как
строка в выводе. Пожалуйста, позволь мне
знаю, что вы хотите больше информации.
Спасибо .. Ура, Шакти. S
Вы можете использовать комбинацию @XmlAnyElement и реализацию DomHandler для обработки этого варианта использования. Для подробного примера см .:
<Ч />
ОБНОВЛЕНИЕ № 2
На основании ваших комментариев
Подскажите, пожалуйста, что такое изменение?
нужно сделать в схеме чтобы сделать
который подал "@XmlAnyElement", так как я
я генерирую Java-классы на
время сборки.
Вы можете использовать аннотацию схемы JAXB dom
, чтобы сгенерировать XmlAnyElement для свойства:
XJC Call
xjc -d out -b bindings.xml dom.xsd
dom.xsd
<xs:schema
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns="http://www.example.com/default"
targetNamespace="http://www.example.com/default">
<xs:element name="customer">
<xs:complexType>
<xs:sequence>
<xs:element ref="address"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="address">
<xs:complexType>
<xs:attribute name="street" type="xs:string"/>
</xs:complexType>
</xs:element>
</xs:schema>
bindings.xml
<jxb:bindings
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:jxb="http://java.sun.com/xml/ns/jaxb"
version="2.1">
<jxb:bindings schemaLocation="string.xsd">
<jxb:bindings node="//xs:element[@name='customer']/xs:complexType/xs:sequence/xs:element[@ref='address']">
<jxb:dom/>
</jxb:bindings>
</jxb:bindings>
</jxb:bindings>
Клиент
Свойство address на Customer
будет помечено @XmlAnyElement
:
package com.example._default;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAnyElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;
import org.w3c.dom.Element;
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
"address"
})
@XmlRootElement(name = "customer")
public class Customer {
@XmlAnyElement
protected Element address;
public Element getAddress() {
return address;
}
public void setAddress(Element value) {
this.address = value;
}
}
<Ч />
ОРИГИНАЛЬНЫЙ ОТВЕТ
Возможно, вы ищете аннотацию @XmlValue. Например, если у вас был следующий класс:
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD
public class Child {
@XmlValue
private String value;
}
Приведенный выше класс будет маршал:
<child>String Value</child>
В соответствующей XML-схеме тип дочернего элемента будет xs: string.
<xs:element name="child" type="xs:string"/>