使用last()的XPATH/PHP问题

Mic*_*nto 3 php xml xpath simplexml

我曾尝试在线阅读各种教程,但我无法在解决这个易于描述但我无法想到解决方案的问题上取得任何进展.

这是一些示例XML:

<AAA>
    <BBB>
        <CCC>1</CCC>
        <CCC>2</CCC>
    </BBB>
    <BBB>
        <CCC>3</CCC>
        <CCC>4</CCC>
    </BBB>
</AAA>
Run Code Online (Sandbox Code Playgroud)

我希望能够<CCC>在每个容器中选择最后一个...换句话说,我希望能够拉动<CCC>2</CCC><CCC>4</CCC>.我已经尝试了无数的表达式来实现这一目标,但我能做的最好的事情就是获得最后一个<CCC>(包含4个).

似乎// BBB/CCC [last()]应该可以工作,但它显然选择了所有CCC是BBB的子级(总共4个),然后只处理last()谓词 - 因此只返回一个元件 <CCC>4</CCC>

这让我疯了!有谁能告诉我光明?非常感谢!!

Rya*_*ook 5

/AAA/BBB/CCC[position() = last()]
Run Code Online (Sandbox Code Playgroud)

//BBB/CCC[position() = last()]而且//CCC[position() = last()]似乎也有效.我在这里找到了一个很酷的xpath测试站点:http://www.whitebeam.org/library/guide/TechNotes/xpathtestbed.rhtm

  • 更短(但等效):`/ AAA/BBB/CCC [last()]`或`// CCC [last()]`.注意:只要有可能,我会避免使用`//`速记,因为它相对较贵.甚至像`/*/*/CCC [last()]`这样的东西比`//`更好. (2认同)