首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Xpath和Oracle XMLTABLE

Xpath和Oracle XMLTABLE
EN

Stack Overflow用户
提问于 2021-05-27 10:22:37
回答 1查看 54关注 0票数 0

我有一个包含XML的CLOB。

代码语言:javascript
复制
<attrs>
    <attr name="1">
        <string>stringvalue</string>
    </attr>
    <attr name="2">
        <integer>1</integer>
    </attr>
    <attr name="3">
        <integer>2</integer>
    </attr>
    <attr name="4">
        <boolean>false</boolean>
    </attr>
</attrs>

如何获得只包含布尔属性和名称属性?

代码语言:javascript
复制
XMLTABLE('/attrs/attr/boolean'
    PASSING XMLTYPE(CLOB)
    COLUMNS ATTRIBUTENAME VARCHAR2(50) PATH '???',
            ATTRIBUTEVALUE VARCHAR2(5) PATH '.'
) X

这样,我就只有价值了,怎么才能得到父母的名字呢?我可以使用‘/attr/attr’,但是我不知道如何只获得布尔值(也许我需要在之后进行筛选?)

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-27 10:39:45

您可以在列路径中的树上走回:

代码语言:javascript
复制
'./../@name'

因此,这意味着:

代码语言:javascript
复制
XMLTABLE('/attrs/attr/boolean'
    PASSING XMLTYPE(CLOB)
    COLUMNS ATTRIBUTENAME VARCHAR2(50) PATH './../@name',
            ATTRIBUTEVALUE VARCHAR2(5) PATH '.'
) X

用你的数据得到:

代码语言:javascript
复制
ATTRIBUTENAME ATTRIBUTEVALUE
------------- --------------
4             false

您还可以在主XPath中应用一个子节点筛选器:

代码语言:javascript
复制
'/attrs/attr[boolean]'

然后获取该attr节点的名称及其子boolean节点,给出:

代码语言:javascript
复制
XMLTABLE('/attrs/attr[boolean]'
    PASSING XMLTYPE(your_CLOB)
    COLUMNS ATTRIBUTENAME VARCHAR2(50) PATH '@name',
            ATTRIBUTEVALUE VARCHAR2(5) PATH 'boolean'
) X

结果是一样的。

db<>fiddle

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67720206

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档