【问题标题】:Informix XML CLOB extract returning NULL when specifying any @attribute指定任何 @attribute 时,Informix XML CLOB 提取返回 NULL
【发布时间】:2021-03-24 14:35:04
【问题描述】:

只要指定了@attribute,Informix IDS 12.25 就会返回 NULL。在下图中,我们有两个语句正在查询相同的文档。语句之间的区别在于其中一个指定了@attribute。而另一个没有。而且,从图像中可以看出,该属性确实存在,因为它是由其中一列返回的。

我一直在搜索,查看文档和文档,所有地方都说语法是正确的。我不知道该怎么办了。真的谢谢。

[编辑] 这是我正在使用的 xml 文件的示例:

<Frame>
<Shape sizeX="5400" sizeY="4400" distance="1800">
  <ShapePoint>
    <Point direction="0" radius="266" />
    <Point direction="144" radius="280" />
    <Point direction="243" radius="289" />
    <Point direction="279" radius="291" />
  </ShapePoint>
</Shape>
</Frame>

这个问题的替代方法,如果主要使用数据库引擎,也将非常受欢迎。

【问题讨论】:

    标签: sql xml xpath informix clob


    【解决方案1】:

    这绝对是一个有效的 Xpath,除了第一个选择一个节点,而那个不工作的选择一个字符串,这让我觉得 extractclob() 对这种类型的结果有问题。

    这是我在 Python 中的测试,以证明这是给定 xml 的正确 xpath。

    In [16]: tree.xpath('/Frame/Shape/ShapePoint/Point[1]')
    Out[16]: [<Element Point at 0x102d68bc0>]
    
    In [17]: tree.xpath('/Frame/Shape/ShapePoint/Point[1]/@radius')
    Out[17]: ['266']
    

    如果你改用 extractvalueclob() 会发生什么?

    https://www.ibm.com/support/knowledgecenter/SSGU8G_12.1.0/com.ibm.xml.doc/ids_xpextractvalue.htm

    【讨论】:

    • 结尾的“clob”单词只是意味着函数将返回一个clob,而不是它将输入读取为一个clob。关于“提取值”,您是对的,但它对所有内容都返回 null,而不仅仅是在指定 @attribute 时。
    • 您能否编辑问题以包含您正在使用的 XML 示例?
    • 恐怕我只能确认这确实是给定 XML 的正确 xpath。希望这会引导您朝着更好的方向前进。编辑答案以包含我的测试。
    • 无论如何,谢谢,一旦您的回答确认 xpath 确实正确,我就赞成它。但是很抱歉,我不能接受它作为正确答案。
    • 完全合理,因为它没有解决问题。我继续搜索,发现这个问题中的 cmets,这表明 extractvalue() 无法提取属性,因为它们在输入 xml 中是不允许的。 stackoverflow.com/questions/54150610/…
    猜你喜欢
    • 2012-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-14
    • 1970-01-01
    • 2017-12-23
    • 2015-09-08
    • 2019-07-29
    相关资源
    最近更新 更多