【问题标题】:XPath Get first element of subsetXPath 获取子集的第一个元素
【发布时间】:2011-08-03 01:07:09
【问题描述】:

我有这样的 XML:

<AAA>
    <BBB aaa="111" bbb="222">
        <CCC/>
        <CCC xxx="555" yyy="666" zzz="777"/>
    </BBB>
    <BBB aaa="999">
        <CCC xxx="qq"/>
        <DDD xxx="ww"/>
        <EEE xxx="oo"/>
    </BBB>
    <BBB>
        <DDD xxx="oo"/>
    </BBB>
</AAA>

我想获得第一个 &lt;CCC&gt; 元素。但是使用 XPath 表达式 //*/CCC[1] 我有两个 &lt;CCC&gt; 元素。它们中的每一个都是&lt;BBB&gt;&lt;/BBB&gt; 上下文中的第一个元素。如何获取子集中的第一个元素?

【问题讨论】:

  • 好问题,+1。请参阅我的答案,以获得一个完整、简短且简单的单行 XPath 表达式,该表达式准确地选择了想要的元素。 :)
  • 好问题。最近居然在这上面发了blog post

标签: xpath


【解决方案1】:

这个应该适合你:

(//*/CCC)[1]

【讨论】:

    【解决方案2】:

    我想获得第一个元素。但是随着 XPath 表达式//*/CCC[1] 我有 有两个元素。他们每个人都是 &lt;BBB&gt;&lt;/BBB&gt; 上下文中的第一个元素。 如何获取子集中的第一个元素?

    这是一个常见问题解答

    [] 运算符的优先级高于// 缩写。

    使用

    (//CCC)[1]
    

    这会选择 XML 文档中的第一个(按文档顺序)CCC 元素。

    【讨论】:

    • 那么,是什么导致了这个问题?
    • @Priti,这是一个规则,表示 CDATA 只是文本节点的(部分)值的词法表示。这与当前的问题/答案无关。如果您有任何有用的 XPath 书籍,您就不会问这些基本问题。或者,如果您将此作为一个适当的 SO 问题提出,那么很多人会及时回答。
    • @Priti,我在这里解释一下:stackoverflow.com/questions/4007413/…
    • @Priti,当您指定&lt;xsl:output method="xml/&gt;(这是默认输出方法)时会发生这种情况。如果您指定&lt;xsl:output method="text"/&gt;,则字符将不转义。
    • 这是我的question
    猜你喜欢
    • 2022-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-11
    • 2012-05-15
    • 2016-10-30
    • 1970-01-01
    • 2021-12-08
    相关资源
    最近更新 更多