【问题标题】:Mapping XPath 1.0 data types to java将 XPath 1.0 数据类型映射到 java
【发布时间】:2009-03-12 19:40:18
【问题描述】:

我正在使用XPath 1.0 来处理传入的网络服务消息。如果使用schema data types,这可能很难做到,因为XPath 1.0 无法识别它们(XPath 2.0 可以,但似乎没有完整的开源实现。不确定Saxon-B 是否这样做)。

例如,xs:boolean 中的文字“true”和“false”表示根据 xml 模式的布尔值 True 和 False,但 XPath 1.0 会将它们都评估为 True。

这意味着根据<test>false</test> 评估/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 绑定框架)?

【问题讨论】:

    标签: java xpath xsd xmlbeans


    【解决方案1】:

    我知道你说过你不想要一个完全成熟的绑定框架,但你看过 jibx。编写绑定文件可能有点痛苦,但是您可以从 XML 模式生成绑定,如果您有一个,而且它的速度如此之快,它是不真实的。

    作为使用 XPath 的替代方法,您是否考虑过将 xml 解析为您可以操作的 dom?

    卡尔

    【讨论】:

    • Karl,到目前为止我还没有仔细研究过 JiBX。如果可能的话,我宁愿避免字节码增强的东西。你能详细说明你的 DOM 想法吗?拥有 DOM 究竟能获得什么?无论如何,感谢您的意见!
    • 如果您想处理传入的 XML,最好将 XML 转换为某种类型安全的格式,通常是一个有助于简化处理的对象。 DOM 不是类型安全的,但取决于 xpath 的复杂程度,您可能会发现提取和操作数据更容易:jdom.org
    • 我知道 JDOM 和朋友,但我使用 XPath 是有原因的。这就是为什么我专门询问“将 XPath 1.0 数据类型映射到 java”,而不是一般的 XML 处理。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-08
    • 1970-01-01
    • 1970-01-01
    • 2013-11-30
    • 2015-02-24
    • 2016-08-18
    • 1970-01-01
    相关资源
    最近更新 更多