从jaxB中的XmlElement读取xmlAttribute

时间:2012-03-27 15:09:07

标签: java jaxb

您好我有以下xml:
                                                    

使用以下代码:

如何在不为Down and Up创建新类并使用@xmlAttribute的情况下获取每个元素的属性DispalyName。 我可以通过添加新的2个类UpElement和DownElement来解决它,并为每个类获取@xmlAttribute但我想在一次类中。

Code Example:

        import javax.xml.bind.annotation.XmlAccessorType;
        import javax.xml.bind.annotation.XmlElement;
        import javax.xml.bind.annotation.XmlRootElement;


        @XmlRootElement(name = "StatusesList")
        @XmlAccessorType(javax.xml.bind.annotation.XmlAccessType.FIELD)
        public class StatusesListElement
        {

            @XmlElement(name = "Down")
            private String down = "";


            @XmlElement(name = "Up")
            private String up = "";


            public String getDown()
            {
                return down;
            }


            public void setDown(String down)
            {
                this.down = down;
            }


            public String getUp()
            {
                return up;
            }


            public void setUp(String up)
            {
                this.up = up;
            }


        }

1 个答案:

答案 0 :(得分:0)

注意:我是EclipseLink JAXB (MOXy)主管,是JAXB 2 (JSR-222)专家组的成员。

使用EclipseLink JAXB(MOXy)

您可以使用 MOXy 中的@XmlPath扩展名来映射此用例:

import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;


@XmlRootElement(name = "StatusesList")
@XmlAccessorType(javax.xml.bind.annotation.XmlAccessType.FIELD)
public class StatusesListElement
{

    @XmlPath("Down/@DisplayName")
    private String down = "";

    @XmlElement(name = "Up/@DisplayName")
    private String up = "";

}

使用任何JAXB实施

您可以在此用例中使用XmlAdapter。以下是我给出的答案的链接,演示了如何做到这一点: