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

Java 如何将xml元素绑定到对象成员变量中?,java,xml,jaxb,unmarshalling,moxy,Java,Xml,Jaxb,Unmarshalling,Moxy,我正在尝试使用moxy将xml解组到一个对象 <root> <name> <firstname>value</firstname> </name> <address>value of address</address> </root> 现在,如何获取XML中address标记的值并将其绑定到class address的addressline变量。您需要使用a

我正在尝试使用moxy将xml解组到一个对象

<root>
    <name>
        <firstname>value</firstname>
    </name> 
    <address>value of address</address>
</root>

现在,如何获取XML中address标记的值并将其绑定到class address的addressline变量。

您需要使用
addressline
属性上的
@XmlValue
注释

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

这是一个类似(但不完全相同)问题的答案,该问题链接在此处:

我们问题的解决办法也与这个问题有关。对于上面的问题,简短的答案是在getMessageText()中使用@XmlValue属性,而不是@XmlElement。我已经使用了“XmlValue”,但它仍然不起作用,所以我恢复使用XmlElement

XmlValue并不是中的全部解决方案。我们还发现,我们需要:

  • @xmlacessortype(xmlacesstype.NONE)
显然是因为班上的其他事情。显然,JABX试图将每个get/set属性与XML匹配,显然,如果存在非XML POJO属性,它会感到困惑,无法或不会处理我的XmlValue(我推断)


吸取的教训。如果您的JAXB没有做您认为它应该做的事情,我就把它弄糊涂了。谢谢你的帮助,知道需要做什么,让我们找到我们还需要什么

谢谢你的回答。这真的很有帮助。但是如果我的Address类包含另一个名为AddressLine2的变量,并且我想将它映射到XML中作为父元素的元素,那该怎么办呢?确切地说,这是我的实际问题。@cgeek-你可以用
@XmlPath(“.”
)注释
地址
属性。使用Jersey的Jackson 2,我必须用Jackson的@JsonValue'注释替换@XmlValue'注释才能使其正常工作
@XmlAccessorType(XmlAccessType.FIELD)
class Address {
    @XmlValue
    String addressline;
}
  @XmlAccessorType( XmlAccessType.NONE )
  @XmlRootElement(name = "announcement")
  public class Announcement
  {
      ... 

      @XmlValue
      public  String getMessageText(){
          return this.messageText;
      }
  }