What is the Jaxb equivalent of a Text node value?

China☆狼群 提交于 2019-12-04 16:26:48

问题


I am looking to convert a class that looks like this ...

public class Amenity {
   public String id;
   public String value;
}

into the following XML using JaxB annotations:

<amenity id="id-string-here">value-string-here</amenity>

Does anyone know what annotation to use on the value member variable to accomplish this? The closest I've gotten so far is:

@XmlRootElement
public class Amenity {
   @XmlAttribute
   public String id;
   @XmlElement
   public String value;
}

Unfortunately this approach doesn't allow me to specify that the value member variable should not be rendered as its own tag <value></value>.


回答1:


I'm not 100% sure about this, but try to use an @XmlValue annotation instead of @XmlElement.




回答2:


It looks like the question was referring to text nodes not CDATA nodes, but here is a link on how EclipseLink JAXB (MOXy) handles CDATA:

  • http://bdoughan.blogspot.com/2010/07/cdata-cdata-run-run-data-run.html



回答3:


This documentation writes:

Q. How can I cause the Marshaller to generate CDATA blocks?

A. This functionality is not available from JAXB directly, but you can configure an Apache Xerces-J XMLSerializer to produce CDATA blocks. Please review the JaxbCDATASample.java sample app for more detail.

(btw, this does not answer your particular question, but since the question title is misleading, and this is the first google result for jaxb CDATA, I'm answering a bit different question)




回答4:


JAXB does not support marshaling/marshaling to/from CDATA xml types.



来源:https://stackoverflow.com/questions/1496052/what-is-the-jaxb-equivalent-of-a-text-node-value

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!