我正在使用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文件中实现这个目的吗?有没有办法读取枚举的值?
答案 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