php - dl dd 的 xpath 查询不起作用

标签 php html xpath html-parsing

这是我到目前为止的代码:

$htmlString = file_get_contents("http://developer.adition/rAD41126");
$domDocument = new DOMDocument();
$domDocument->loadHTML($htmlString);
$xpath = new DOMXPATH($domDocument);
$className = "phui-property-list-properties "; 
$results = $xpath->query("//dl[@class='$className']/dd[last()]" );

var_dump($results);`

输出是一个空的DOMNodeList元素。它应该给我html部分的最后一个dd元素,如下所示。类名 "phui-property-list-properties " 在 DOM 中出现时故意有一个额外的空格。

具有相关元素的 DOM 部分是

<dl class="phui-property-list-properties ">
   <dt class="phui-property-list-key">Project/Package Auditors </dt>
   <dd class="phui-property-list-value">
   <dt class="phui-property-list-key">Committed </dt>
   <dd class="phui-property-list-value">
   <dt class="phui-property-list-key">Parents </dt>
   <dd class="phui-property-list-value">
   <dt class="phui-property-list-key">Branches </dt>
   <dd class="phui-property-list-value">
   <dt class="phui-property-list-key">Tags </dt>
   <dd class="phui-property-list-value">
   <dt class="phui-property-list-key">Subscribers </dt>
   <dd class="phui-property-list-value">
     <em>None</em>
  </dd>
</dl>

我想获取带有属性 class="phui-property-list-value"

的最后一个 dd 元素

编辑

即使对于查询,我也得到一个空对象

$className = "phui-property-list-properties ";
$results = $xpath->query("//dl[@class='$className']");

var_dump($results);

最佳答案

DOM 对象对于 var_dump()print_r() 是不可见的。 Read Here

您的代码工作正常并且还显示结果数量,但 var_dump() 在这里不起作用。下面的代码展示了如何检查结果。

<?php
$htmlString = <<<EOD
<dl class="phui-property-list-properties ">
   <dt class="phui-property-list-key">Project/Package Auditors </dt>
   <dd class="phui-property-list-value">
   <dt class="phui-property-list-key">Committed </dt>
   <dd class="phui-property-list-value">
   <dt class="phui-property-list-key">Parents </dt>
   <dd class="phui-property-list-value">
   <dt class="phui-property-list-key">Branches </dt>
   <dd class="phui-property-list-value">
   <dt class="phui-property-list-key">Tags </dt>
   <dd class="phui-property-list-value">
   <dt class="phui-property-list-key">Subscribers </dt>
   <dd class="phui-property-list-value">
     <em>None</em>
  </dd>
</dl>
EOD;

$domDocument = new DOMDocument();
$domDocument->loadHTML($htmlString);
$xpath = new DOMXPATH($domDocument);
$className = "phui-property-list-properties "; 
$results = $xpath->query("//dl[@class='$className']/dd[last()]" );

foreach ($results as $result) {
    $xml = $result->ownerDocument->saveXML($result);
    var_dump($xml);
}
?>

输出:

string(74) "<dd class="phui-property-list-value">&#13;
     <em>None</em>&#13;
  </dd>"

关于php - dl dd 的 xpath 查询不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26361710/

相关文章:

php - 当我在 Eclipse 中调试 PHP 脚本时,它不会加载 mysql 扩展

html - 如何制作线性渐变 CSS 背景以填充整个背景而不会在底部切断?

xml - XPath 联合运算符和上下文

xml - 通过XPath选择XML节点时如何使用正则表达式?

php - ZF2 转发电子邮件 (Zend\Mail\Storage\Message)

php - 在 PHP 中创建 mySQL 查询以生成列平均值的 JSON 数组

PHP 更改 SOAP 命名空间

css - 这个DIV布局可行吗?

jquery - 完全删除水平滚动条

xml - XSLT的XPath结果不正确-无法遍历整个XML