【问题标题】:Traverse XML using XPath使用 XPath 遍历 XML
【发布时间】:2012-10-05 07:19:41
【问题描述】:

我有以下 XML:

<Item type="Workflow Process">
    <id>72F2AEEE86644D16ADE4B8FCEF68638A</id>
    <keyed_name>PR-100001</keyed_name>
    <Relationships>
        <Item type="Workflow Process Activity">
            <id>818175D7A6204275B9EAC45517FFC0DE</id>
            <related_id>
                <Item type="Activity">
                    <id>E0B712EB12914FBD8B5AEDCBDB3F313F</id>
                    <keyed_name>Start</keyed_name>
                </Item>
            </related_id>
        </Item>
    </Relationships>
</Item>

注意:上面的XML结构在我的XML文件中重复了&lt;id&gt;&lt;keyed_name&gt;的不同值

我有&lt;Item type="Activity"&gt;&lt;id&gt;,我想知道&lt;Item type="Workflow Process"&gt; 的父节点&lt;id&gt; 所属的Activity

实现它的 XPath 是什么?

【问题讨论】:

  • 我们能看看你到目前为止做了什么吗?在 Google /StackOverflow 上进行一些搜索会给出这些细节或查看 www.w3schools.com/xpath/xpath_syntax.asp

标签: xml xpath


【解决方案1】:

如果您已经拥有对内部 Activity 的引用,并且可以评估一个将其作为上下文节点的 XPath,那么

ancestor::Item[@type = 'Workflow Process']/id

如果您只有 id 并且从树的顶部开始,那么只要所有 id 在文档中都是全局唯一的,我能想到的最简单的是

//Item[@type = 'Workflow Process'][.//id = 'id you want']/id

如果不知道上下文,我无法更具体 - 这是在 XSLT 中,还是您使用某种 DOM 库(哪个?)。

【讨论】:

  • 很高兴它有帮助,欢迎来到 SO。如果答案对您有用,请考虑通过单击左侧的绿色对勾标记接受。建立接受良好答案的记录将意味着人们更愿意回答您未来的问题。
猜你喜欢
  • 1970-01-01
  • 2014-02-28
  • 1970-01-01
  • 2021-11-04
  • 1970-01-01
  • 1970-01-01
  • 2023-04-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多