在 php xpath 中检索条件值


Conditional value retrieve in php xpath

我正在尝试使用 php xpath 求值或查询来检索某些值。但无法成功做到这一点。以下是页面的 html 结构:

<div id="productinfo">
<h2>
<span id="productname">Computer</span>
</h2>
<span id="servieidLabel" style=""> Service ID: </span>
<span id="snLabel" style="display: none"> Serial Number: </span>
<span id="servidno">12345ABCD</span>

我只想显示带有 style="display:none" 的内容,或者如果 style 属性根本不存在。因此,结果是:- 服务 ID:12345ABCD。

我试过:

$ServLab = $xpath->query("//span[@id='servieidLabel']");
foreach ($ServLab as $entry) {
echo "Service Label:" ,$entry->nodeValue."<br />";
}

输出 = 服务 ID:

$servid = $xpath->query("//span[@id='servidno']");
foreach ($servid as $entry) {
echo "Service Id No:" ,$entry->nodeValue."<br />";
}

输出 = 空白。而输出应该是 12345ABCD。我错过了什么?

如果我尝试:

$prodid = $xpath->evaluate("//div[@id='productinfo']");
foreach ($prodid as $entry) {
echo $entry->nodeValue."<br />";
}

输出 = 服务 ID: 序列号:

请帮忙。

您首先陈述的问题可以在单个查询中解决。像这个:

$ServLab = $xpath->query("//div/span[string-length(@style) < 1]");
foreach ($ServLab as $entry) {
    echo $entry->nodeValue."<br />";
}

这将提供

Service ID: 
12345ABCD