我的问题与之前提出的问题相似,但事实是我还没能解决我的问题。 我有一个XML文档,我需要将其转换(解组)到一个对象,我正在使用JAXB注释。到目前为止,这么好,但有一个属性我无法从中获得价值。 让我编码而不是说话。
我的Java对象:
@XmlRootElement
public class Product {
private String date_upd;
private MetaDescription meta_description;
//------------Static classes for sub nodes------------------
@XmlAccessorType(XmlAccessType.FIELD)
static class MetaDescription{
private List<Language> language ;
}
@XmlAccessorType(XmlAccessType.FIELD)
static class Language{
@XmlAttribute(name="id")
private String id;
@XmlValue
private String language = null;
void setLanguage(String language){
this.language = language;
}
String getLanguage(){
return this.language;
}
}
public String getDate_upd() {
return date_upd;
}
/**
* @param date_upd the date_upd to set
*/
@XmlElement
public void setDate_upd(String date_upd) {
this.date_upd = date_upd;
}
/**
* @return the meta_description
*/
public MetaDescription getMeta_description() {
return meta_description;
}
/**
* @param meta_description the meta_description to set
*/
@XmlElement
public void setMeta_description(MetaDescription meta_description) {
this.meta_description = meta_description;
}
}
我的XML文档包含以下片段:
<product>
<date_upd>
<![CDATA[2013-12-06 18:03:59]]>
</date_upd>
<meta_description>
<language id="1" xlink:href="http://demo1.it2care.com/shop/api/languages/1">
<![CDATA[product1]]>
</language>
<language id="2" xlink:href="http://demo1.it2care.com/shop/api/languages/2">
<![CDATA[produto1]]>
</language>
</meta_description>
</product>
它具有更多属性,但只有这些属性相关。 'date_upd'正确地被解组,但我无法解决'meta_description'问题。我在'MetaDescription'字段中获得了一个'Language'对象列表,但是我无法获得'Language'的值,尽管我从'language'节点得到了'id'attr。 对于呈现的XML示例,'meta_description'是具有2个元素的List。在两个列表元素中,“ID”已正确填充,但我从“语言”中获取“”,而不是“product1”。
任何提示家伙?非常感谢提前。
答案 0 :(得分:0)
想想我明白了!因为我的节点里面有CDATA元素,所以我得到了语言。出于某种原因,我仍然想弄清楚,unmarshaller没有进入这些节点,因此返回一个空字符串。 我解决了问题的根源。将XML字符串从服务器转换为XML文档时,我添加了以下片段:
//Create a Document factory
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
//Line I added
factory.setCoalescing(true); //remove all CDATA wrappers
这解决了我的问题,使用我最初发布的结构。 希望这有帮助!