0

我正在尝试使用 XPATH 返回 XML 中不包含 PL/SQL 过程中的内容的子节点的父节点。

到目前为止,我有以下 XMLextract 将返回子节点的包装父节点,该子节点的 id 为 10 或 11,其中 p_xml_content 是我的 xml 文档。

   xmltype(p_xml_content).extract('//return/issueEventType[id=11] /../. | //return/issueEventType[id=10] /../.')

我需要将此语句转换为返回包含空的completionDate 节点的所有返回标记。

我按照这个思路思考,但不确定这是否可行:

   xmltype(p_xml_content).extract('//return[completionDate=''] /../.')

有任何想法吗?

干杯

热兹平

4

1 回答 1

1

假设“空的completionDate节点”意味着“没有子节点的completionDate元素”,这将转化为completionDate[not(node())]

并且“所有包含空的completionDate节点的返回标签”因此转换为

//return[completionDate[not(node())]]

所以试试:

xmltype(p_xml_content).extract('//return[completionDate[not(node())]]')

你的表达方式,稍作修改,//return[completionDate=""]也有效。

使用以下示例 XML

<sample>
    <return id="1">
        <completionDate></completionDate>
        <otherData>some data</otherData>
    </return>
    <return id="2">
        <completionDate>2013-09-10</completionDate>
    </return>
    <return id="3">
        <completionDate />
        <otherDataAlt>more data</otherDataAlt>
    </return>
    <return id="4">
        <completionDate>2013-09-11</completionDate>
        <otherDataAlt>alt data</otherDataAlt>
    </return>
    <return id="5">
        <completionDate></completionDate>
    </return>
    <return id="6">
        <completionDate />
    </return>
</sample>

并返回ID 为 1、3、5 和 6 的节点。(在//return[completionDate=""]http://www.xpathtester.com/http://www.freeformatter.com/xpath-tester.html测试)//return[completionDate[not(node())]]<return>

于 2013-08-21T22:17:18.213 回答