xsl 中枚举的值
Value of enum in xsl
我正在使用 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;
}
}
此外,我得到了一个 class,其中包含以下成员:
@XmlAccessorType(XmlAccessType.FIELD)
public class SomeValue {
@XmlEnumValue(value = "myEnum")
protected MyEnum myEnum;
}
与 getter 和 setter 分别。我得到了一个生成的 xml-file
<?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>
我想要"description of A"而不是"A"。你能告诉我如何在我的 xsl 文件中实现这个吗?有什么方法可以读取枚举的值吗?
我遇到了同样的问题并找到了这个问题,但不幸的是没有答案。然而,在进一步挖掘之后,我找到了适合自己的解决方案。 5 年后回答这个问题有点太晚了,但希望如果有人再次偶然发现它,他们可能会发现它有帮助 -
首先,将 Enum
class 导入 xsl
-
<xsl:stylesheet xmlns:myEnum="xalan://path.to.your.package.MyEnum"/>
然后你需要在 MyEmum
class 写一个静态方法,它将 Enum
作为值, return
Enum
的 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
方法了-
<td>
<xsl:value-of select="myEnum:getEnumDescription(myEnum)" />
</td>
我正在使用 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;
}
}
此外,我得到了一个 class,其中包含以下成员:
@XmlAccessorType(XmlAccessType.FIELD)
public class SomeValue {
@XmlEnumValue(value = "myEnum")
protected MyEnum myEnum;
}
与 getter 和 setter 分别。我得到了一个生成的 xml-file
<?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>
我想要"description of A"而不是"A"。你能告诉我如何在我的 xsl 文件中实现这个吗?有什么方法可以读取枚举的值吗?
我遇到了同样的问题并找到了这个问题,但不幸的是没有答案。然而,在进一步挖掘之后,我找到了适合自己的解决方案。 5 年后回答这个问题有点太晚了,但希望如果有人再次偶然发现它,他们可能会发现它有帮助 -
首先,将 Enum
class 导入 xsl
-
<xsl:stylesheet xmlns:myEnum="xalan://path.to.your.package.MyEnum"/>
然后你需要在 MyEmum
class 写一个静态方法,它将 Enum
作为值, return
Enum
的 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
方法了-
<td>
<xsl:value-of select="myEnum:getEnumDescription(myEnum)" />
</td>