Элемент раздела XML содержит атрибут и CDATA:
ELEM: nodeName="ConfigData" local="ConfigData"
ATTR: nodeName="ConfigSize" local="ConfigSize" nodeValue="356"
TEXT: nodeName="#text" nodeValue="356"
TEXT: nodeName="#text" nodeValue=[WS]
ELEM: nodeName="Data" local="Data"
ATTR: nodeName="Format" local="Format" nodeValue="L5K"
TEXT: nodeName="#text" nodeValue="L5K"
TEXT: nodeName="#text" nodeValue=[WS]
CDATA: nodeName="#cdata-section" nodeValue="[360,0,6,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]"
TEXT: nodeName="#text" nodeValue=[WS]
TEXT: nodeName="#text" nodeValue=[WS]
TEXT: nodeName="#text" nodeValue=[WS]
Я использовал следующий код, но он не смог получить CDATA.
@XmlRootElement (имя = "ConfigData")
public class ConfigData {
private int configSize;
private Data data;
@XmlElement(name="Data")
public void setData(Data data) {
this.data = data;
}
public Data getData() {
return data;
}
}
@XmlRootElement(name="Data")
public class Data {
private String format;
private String cData;
@XmlAttribute(name="Format")
public void setFormat(String format) {
this.format = format;
}
public String getFormat() {
return format;
}
@XmlCDATA()
@XmlJavaTypeAdapter(value=AdapterXmlCDATA.class)
public void setCData(String cData) {
this.cData = cData;
}
public String getCData() {
return cData;
}
}
public class AdapterXmlCDATA extends XmlAdapter<String, String> {
@Override
public String marshal(String value) throws Exception {
return "<![CDATA[" + value + "]]>";
}
@Override
public String unmarshal(String value) throws Exception {
//System.out.println("AdapterXmlCDATA:" + value);
return value;
}
}
Буду признателен, если кто-нибудь скажет мне, что я делаю не так. Я думаю, что если использовать правильную нотацию CDATA в классе данных, например "@XmlCDATA ()
@XmlJavaTypeAdapter (value = AdapterXmlCDATA.class) "может заставить его работать. Спасибо