【问题标题】:XPath for element matching global id?元素匹配全局ID的XPath?
【发布时间】:2020-05-20 17:10:24
【问题描述】:

我试图找到示例但没有成功

这里是一个带有 XML 文档的示例:

<?xml version="1.0" encoding="UTF-8" ?>
<root>
    <name>vlabresvsanvc01</name>
    <adapterKindKey>VMWARE</adapterKindKey>
    <resourceKindKey>VMwareAdapter Instance</resourceKindKey>
    <resourceStatusStates>
        <adapterInstanceId>85966e95-1ds5-4551-aecb-d707c9453efe</adapterInstanceId>
        <resourceStatus>DATA_RECEIVING</resourceStatus>
        <resourceState>STARTED</resourceState>
        <statusMessage></statusMessage>
    </resourceStatusStates>
    <resourceStatusStates>
        <adapterInstanceId>95f3530e-a526-4a21-bd92-c0f391a8c2ad</adapterInstanceId>
        <resourceStatus>DATA_RECEIVING</resourceStatus>
        <resourceState>STARTED</resourceState>
        <statusMessage>Trust Established.</statusMessage>
    </resourceStatusStates>
    <identifier>95f3530e-a526-4a21-bd92-c0f391a8c2ad</identifier>
</root>

我只想为等于标识符 (/root/identifier) 的 adapterInstanceId 兄弟 (95f3530e-a526-4a21-bd92-c0f391a8c2ad) 选择 resourceStatus (/root/resourceStatusStates/resourceStatus)。

事实上,我想知道这是否可以在 XPath 2.0 中表达。

【问题讨论】:

    标签: xml xpath xpath-2.0


    【解决方案1】:

    这个 XPath,

    /root/resourceStatusStates[adapterInstanceId = /root/identifier]/resourceStatus
    

    将选择resourceStatus 元素的兄弟adapterInstanceId 等于/root/identifier

    <resourceStatus>DATA_RECEIVING</resourceStatus>
    

    根据要求。

    另见Matching a node based on a sibling's value with XPath

    【讨论】:

    • 嗨。非常感谢。这正是我一直在寻找的。也感谢您的链接
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-04
    • 1970-01-01
    • 2013-04-21
    • 2022-06-16
    • 2014-02-02
    相关资源
    最近更新 更多