如何将xml元素绑定到对象成员变量中?

我正在尝试使用moxy将xml解组为对象.Below是xml的示例。

  value  
value of address

以下是我想要映射的课程。

 import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; import org.eclipse.persistence.oxm.annotations.XmlPath; @XmlRootElement(name="root") @XmlAccessorType(XmlAccessType.FIELD) public class Response { @XmlPath("name/firstname/text()") String name; Address address; } class Address { String addressline; } 

现在,我如何获取XML中的地址标记的值并将其绑定到类Address的地址行变量。

您需要在addressline属性上使用@XmlValue批注。

 @XmlAccessorType(XmlAccessType.FIELD) class Address { @XmlValue String addressline; } 

这是一个类似(但不完全相同 )的问题的答案:

  • 如何鼓励JAXB读取XmlElement内容字符串?

我们问题的解决方案也与此问题有关。 对于上面的问题,简短的答案( 如前所述 )是将@ XmlValue属性与getMessageText()一起使用,而不是@XmlElement。 我已经使用’XmlValue’了,它仍然没有用,所以我恢复了XmlElement。

在这种情况下, XmlValue不是整个解决方案。 我们还发现我们需要:

  • @ XmlAccessorType (XmlAccessType.NONE)

显然是因为课堂上的其他东西。 显然,JABX尝试将每个get / set属性与XML匹配,显然它很混乱,如果存在非XML POJO属性(我推断),则不能或不会处理我的XmlValue。

  @XmlAccessorType( XmlAccessType.NONE ) @XmlRootElement(name = "announcement") public class Announcement { ... @XmlValue public String getMessageText(){ return this.messageText; } } 

学过的知识。 如果你的JAXB没有做你认为应该做的事情, 我就把它糊涂了 。 感谢您的帮助,知道需要做什么,让我们找到我们还需要的其他东西。