有一个简短的问题。有谁知道如何让JAXB(marshall)呈现布尔字段为1和0而不是打印出“真”和“假”?如何让JAXB渲染布尔值为0和1,不是真和假
23
A
回答
0
你可以写一对解析器/作家和结合JAXB XML定义属性映射。
1
我可能会为一个布尔值转换为int创建一个类型的适配器。 JAXB用户指南中有一些examples。
6
JAXB提供了一种灵活的方式来customize your bindings。您只需编写一个XML文件,该文件将指出如何绑定XML和Java类型。在你的情况下,你可以使用<javaType>
声明,其中你可以指定parseMethod
和printMethod
。这些方法可以简单到
public boolean myParseBool(String s)
{
return s.equals("1");
}
public String myPrintBool(boolean b)
{
return b ? "1" : "0";
}
可能存在更简单的方法,也许使用DatatypeConverter,但我不知道够这个主题,以帮助您更!
37
适配器类:
import javax.xml.bind.annotation.adapters.XmlAdapter;
public class BooleanAdapter extends XmlAdapter<Integer, Boolean>
{
@Override
public Boolean unmarshal(Integer s)
{
return s == null ? null : s == 1;
}
@Override
public Integer marshal(Boolean c)
{
return c == null ? null : c ? 1 : 0;
}
}
用法:
@XmlElement(name = "enabled")
@XmlJavaTypeAdapter(BooleanAdapter.class)
public Boolean getEnabled()
{
return enabled;
}
6
有同样的问题作为user20298,我接着mtpettyp提示,并适应它为我的配置。
我的配置是: - Maven构建项目。 - maven中的“org.jvnet.jaxb2.maven2”插件。 - JAXB 2.2.6 - 在此之际,我正在为KML 2.2(ogckml22.xsd)Java类
我偶然发现了布尔的问题被渲染为“真/假”,当谷歌地图希望他们能够为“1/0”
这是Maven的插件配置:
<plugin>
<groupId>org.jvnet.jaxb2.maven2</groupId>
<artifactId>maven-jaxb2-plugin</artifactId>
<executions>
<execution>
<phase>generate-sources</phase>
<goals>
<goal>generate</goal>
</goals>
</execution>
</executions>
<configuration>
<generateDirectory>src/main/generated</generateDirectory>
<extension>true</extension>
<removeOldOutput>true</removeOldOutput>
</configuration>
我添加到src /主/资源文件夹中的JAXB的绑定。包含以下内容的xjb文件:
<?xml version="1.0" ?>
<bindings xmlns="http://java.sun.com/xml/ns/jaxb"
version="2.1"
xmlns:kml="http://www.opengis.net/kml/2.2"
xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<globalBindings>
<xjc:simple/>
<xjc:javaType name="java.lang.Boolean"
xmlType="xsd:boolean"
adapter="path.to.my.JaxbBooleanAdapter"/>
</globalBindings>
...
...
</bindings>
适配器类是这样的:
package path.to.my;
import javax.xml.bind.annotation.adapters.XmlAdapter;
/**
* Utility class to correctly render the xml types used in JAXB.
*/
public class JaxbBooleanAdapter extends XmlAdapter<String, Boolean>
{
@Override
public Boolean unmarshal(String v) throws Exception
{
if ("1".equals(v))
{
return true;
}
return false;
}
@Override
public String marshal(Boolean v) throws Exception
{
if (v == null)
{
return null;
}
if (v)
{
return "1";
}
return "0";
}
}
相关问题
- 1. 显示布尔作为真/假,而不是1/0在NSTableView的
- 2. 如何让ngClick在0和1之间切换而不是真和假?
- 3. Serialize布尔值为“1”和“0”而不是“true”和“false”
- 4. 用0和1(布尔值)的值
- 5. 使用布尔变量在“1”和“0”中打印真值表
- 6. 布尔,真,真,真如何假?
- 7. rails_admin变化布尔默认图标真假,而不是字符串“真”和“假”
- 8. MySQL的:回归“0”和“1”,而不是“假”与“真”
- 9. 如果布尔值为假,如何让循环再次运行
- 10. 获取布尔值为true或false,而不是1或0
- 11. JavaScript布尔真正变成假,假不变真
- 12. 如何防止SerializeJSON将是/否/真/假字符串更改为布尔值?
- 13. GSON如何理解1,对,是的,因为布尔值是真的?
- 14. 如何写在布尔值的`for`环路(假,真)
- 15. 搜索页面 - 布尔值 - 如何搜索真/假/两者?
- 16. JavaScript:布尔“真”''是'!0'的简写吗?
- 17. 布尔逻辑/真值表和输出
- 18. 什么是表示真假的GL布尔值?
- 19. 布尔逻辑,真要是1出4都为真
- 20. GSON序列化布尔值0或1
- 21. PHP获取返回字符串,而不是布尔值“真/假”值
- 22. 整洁的代码转换布尔[] - >“假,真,真,假”
- 23. 在PHP中为什么是真的投1和假投空串?
- 24. 1和0的T-SQL无法识别为布尔常量
- 25. 将Coffeescript中的真假分别转换为1和-1
- 26. 使用布尔真/假与JOptionPane.YES_NO_OPTION
- 27. 布尔真或假,负收益
- 28. 的Javascript布尔真/假速记jQuery中
- 29. 确实c具有布尔(真/假)
- 30. JAXB布尔处理古怪和JSF
好极了!正是我需要的! – 2009-12-22 06:51:35
为什么这不是被接受的答案? – kasdega 2013-04-13 13:19:48