将xs:boolean值转换为Java布尔值

时间:2015-01-13 12:40:58

标签: java xml

鉴于XSD中的xs:boolean词法范围(true,1,false,0),是否存在Apache commons / Guava或其他广泛使用的第三方库,它从该类型的String值转换为Java Boolean类型?

我想我可以按照以下方式实现自己的功能,但对于大概需要和使用的东西,我宁愿使用标准库。

public static Boolean fromXSDBoolean(String _xsdBoolean) {
    /* XSD specification:
       Lexical representation
       An instance of a datatype that is defined as boolean can have the 
       following legal literals {true, false, 1, 0}. 
    */
    if (_xsdBoolean==null)
        return null;
    String xsdBoolean = _xsdBoolean.trim();
    if ("".equals(xsdBoolean))
        return null;
    switch (xsdBoolean) {
    case "true":
    case "1":
        return true;
    case "false":
    case "0":
        return false;
    default:
        throw new IllegalArgumentException(_xsdBoolean);
    }
}

1 个答案:

答案 0 :(得分:3)

您可以将JDK / JRE中的JAXB DatatypeConverter类用作Java SE 6的一部分:

javax.xml.bind.DatatypeConverter.parseBoolean("0")     // false
javax.xml.bind.DatatypeConverter.parseBoolean("  0  ") // false      
javax.xml.bind.DatatypeConverter.parseBoolean("1")     // true
javax.xml.bind.DatatypeConverter.parseBoolean("  1  ") // true
javax.xml.bind.DatatypeConverter.parseBoolean("false") // false
javax.xml.bind.DatatypeConverter.parseBoolean("true")  // true

注意:Stringnull的输入会产生NullPointerException,因此您需要在调用{{1}之前检查这些输入}。