将xs:boolean值转换为Java boolean

将xs:boolean值转换为Java boolean,java,xml,Java,Xml,给定XSD true、1、false、0中的xs:boolean词法作用域,是否有Apache commons/Guava或其他广泛使用的第三方库将该类型的字符串值转换为Java布尔类型 我想我可以实现我自己的,如下所示,但对于一些可能被广泛需要和使用的东西,我更愿意使用标准库 public static Boolean fromXSDBoolean(String _xsdBoolean) { /* XSD specification: Lexical representa

给定XSD true、1、false、0中的xs:boolean词法作用域,是否有Apache commons/Guava或其他广泛使用的第三方库将该类型的字符串值转换为Java布尔类型

我想我可以实现我自己的,如下所示,但对于一些可能被广泛需要和使用的东西,我更愿意使用标准库

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);
    }
}
您可以使用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

注意:空字符串或null的输入将导致NullPointerException,因此您需要在调用parseBoolean之前检查这些输入。

这很好,但遗憾的是,我们还有javax.xml.bind.DatatypeConverter.parseBoolean不是布尔值//false,而是抛出IllegalArgumentException的文档