我正在使用XPath 1.0来处理传入的 Web 服务消息。如果使用模式数据类型,这可能很难做到,因为 XPath 1.0 无法识别它们(XPath 2.0 可以,但似乎没有完整的开源实现。不确定Saxon-B是否这样做)。
例如,xs:boolean 中的文字“true”和“false”表示根据 xml 模式的布尔值 True 和 False,但 XPath 1.0 会将它们都评估为 True。
这意味着评估实际上返回 True /test
。<test>false</test>
其他数据类型也是如此:“12.78e-2”是 xs:double 的有效值,但计算结果为 Double.NaN。
javax.xml.datatype
包含持续时间和日期时间的类型映射,仅此而已。
XMLBeans包含易于使用的 java 和 schema 的内置数据类型之间的转换器:
Node n = jaxp13XPathTemplate.evaluateAsNode(expression, context);
boolean b = XmlBoolean.Factory.parse(n).getBooleanValue();
是否有任何其他可能有用的工具(不,我不是在寻找成熟的 XML 绑定框架)?