将xs:boolean值转换为Java boolean
给定XSD true、1、false、0中的xs:boolean词法作用域,是否有Apache commons/Guava或其他广泛使用的第三方库将该类型的字符串值转换为Java布尔类型 我想我可以实现我自己的,如下所示,但对于一些可能被广泛需要和使用的东西,我更愿意使用标准库将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
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的文档