我正在使用XPath 1.0来处理传入的Web服务消息。如果使用schema data types,这可能很难做到,因为XPath 1.0无法识别它们(XPath 2.0确实如此,但似乎没有完整的开源实现。不确定Saxon-B是否执行此操作)。
例如,xs:boolean中的文字“true”和“false”表示根据xml模式的布尔值True和False,但XPath 1.0将它们都评估为True。
这意味着,针对/test
评估<test>false</test>
实际上会返回True。
其他数据类型也是如此:“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绑定框架)?
答案 0 :(得分:0)
我知道你说你不想要一个完全成熟的绑定框架但是你看过jibx。编写绑定文件可能有点痛苦,但是你可以从XML模式生成绑定,如果你有一个绑定文件,那么它很快就会变得不真实。
作为使用XPath的替代方法,您是否考虑将xml解析为dom然后可以操作?
卡尔