鉴于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);
}
}
答案 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
注意:空String
或null
的输入会产生NullPointerException
,因此您需要在调用{{1}之前检查这些输入}。