有一個簡短的問題。有誰知道如何讓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. 真值表 - 將布爾值轉換爲1和0
- 4. Kendo ui grid不理解1/0作爲布爾真/假
- 5. Serialize布爾值爲「1」和「0」而不是「true」和「false」
- 6. 將布爾列渲染爲Yes/No而不是真/假的最佳方法
- 7. 用0和1(布爾值)的值
- 8. 布爾,真,真,真如何假?
- 9. 使用布爾變量在「1」和「0」中打印真值表
- 10. rails_admin變化布爾默認圖標真假,而不是字符串「真」和「假」
- 11. 如何修改此真值表,以便它使用並顯示1和0而不是真和假
- 12. MySQL的:迴歸「0」和「1」,而不是「假」與「真」
- 13. 爲什麼MS訪問布爾值爲真-1而不是1或真?
- 14. 如何驗證布爾值是真是假
- 15. 如何在AS3中將字符串「1」和「0」轉換爲真和假?
- 16. php如何區分0或1和布爾值
- 17. 映射字符串1和0爲真或假
- 18. 問題與重採樣和真/假被設置爲1或0
- 19. 如果布爾值爲假,如何讓循環再次運行
- 20. 獲取布爾值爲true或false,而不是1或0
- 21. Rails布爾值 - True和False與1和0
- 22. @ Html.LabelFor爲布爾正顯示出真假
- 23. JavaScript布爾真正變成假,假不變真
- 24. 如何防止SerializeJSON將是/否/真/假字符串更改爲布爾值?
- 25. 布爾和它的不值都是假的?
- 26. JSON值1或0 - int或布爾值
- 27. 如何讓一個布爾值索引唯一爲真
- 28. GSON如何理解1,對,是的,因爲布爾值是真的?
- 29. 搜索頁面 - 布爾值 - 如何搜索真/假/兩者?
- 30. 如何寫在布爾值的`for`環路(假,真)
好極了!正是我需要的! – 2009-12-22 06:51:35
爲什麼這不是被接受的答案? – kasdega 2013-04-13 13:19:48