枚举在xsl中的值

时间:2015-03-11 11:28:38

标签: java xml xslt enums jaxb

我正在使用java而且我得到了一个枚举

public enum MyEnum {

    A("description of A"),
    B("description of B");

    private String description;

    MyEnum(String description) {
        this.description = description;
    }

    @Override
    public String toString() {
        return getBeschreibung();
    }

    public String getBeschreibung() { 
        return beschreibung;
    }

}

此外,我得到了一个有以下成员的课程:

@XmlAccessorType(XmlAccessType.FIELD)
public class SomeValue {

    @XmlEnumValue(value = "myEnum")
    protected MyEnum myEnum;

}

分别使用getter和setter。我有一个生成的xml文件

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<someValue>
    <myEnum>A</myEnum>
</someValue>

我的xsl如下所示:

<xsl:for-each select="someValue">
    <td>
        <xsl:value-of select="myEnum" />
    </td>
</xsl:for-each>

而不是gettin“A”我想要“描述A”。你能告诉我如何在我的xsl文件中实现这个目的吗?有没有办法读取枚举的值?

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题,发现了这个问题,但不幸的是没有答案。但是,在深入研究之后,我为自己找到了解决方案。在5年后回答一个问题还为时已晚,但希望如果有人再次发现它,他们可能会发现对您有帮助-

首先,将Enum类导入您的xsl-

<xsl:stylesheet xmlns:myEnum="xalan://path.to.your.package.MyEnum"/>

然后,您需要在MyEmum类中编写一个静态方法,该方法将Enum作为值,并以return Enum的{​​{1}}为准。

description

然后,您可以直接调用静态public String getDescription() { return description; } public static String getEnumDescription(String enumVal) { return getEnumFromString(enumVal).getDescription(); } private static MyEnum getEnumFromString(String enumVal) { for (MyEnum enum : MyEnum.values()) { if (enum.name() == enumVal) { return enum; } } throw new IllegalArgumentException(); } 方法-

getEnumDescription