使用XPath选择某个类的第一个元素的子元素

时间:2014-09-10 08:08:51

标签: php xpath

我有这种类型的代码:

<div class="content">
    <p></p>
    <p></p>
    <p></p>
</div>
<div class="content">
    <p></p>
    <p></p>
    <p></p>
</div>

我希望从第一个元素p中选择所有content个元素。 我设法通过使用:

选择第一堂课
(//div[@class="content"])[1]

但是使用(//div[@class="content"])[1]/p它仍会显示两个类

1 个答案:

答案 0 :(得分:1)

以下是使用PHP's SimpleXML的工作示例。我对您提供的HTML代码进行了一些小的更改,因此输出更有意义。

关于你提供的XPath表达式,我刚删除了括号,它都按预期工作。

注意 :关注@ LarsH的评论后,我恢复了XPath表达式,因为它对初学者来说没问题。我冒昧地根据它的例子来更新它。

<?php
$html = <<<HTML
<body>
    <div class="content">
        <p>1</p>
        <p>2</p>
        <p>3</p>
    </div>
    <div class="content">
        <p>4</p>
        <p>5</p>
        <p>6</p>
    </div>
    <div>
        <div class="content">
            <p>7</p>
            <p>8</p>
            <p>9</p>
       </div>
   </div>
</body>
HTML;

$sxe = new SimpleXMLElement($html);
foreach ($sxe->xpath('(//div[@class="content"])[1]/p') as $p) {
    echo "$p\n";
}

输出:

1
2
3

链接到codepad working example