【问题标题】:xpath query for dl dd not workingdl dd 的 xpath 查询不起作用
【发布时间】:2014-10-14 13:10:19
【问题描述】:

这是我目前的代码:

$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元素

EDIT

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

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

var_dump($results);

【问题讨论】:

  • 我认为查询没有问题,应该根据您提供的标记获取该节点
  • 您的原始和编辑部分在$className 变量值的末尾包含一个额外的空格。尝试删除它。希望它会奏效。
  • @arvinchhi DOM 元素中存在额外的空间并且是有意的。我删除了它,但它仍然不起作用。

标签: php html xpath html-parsing


【解决方案1】:

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>"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-02-28
    • 2013-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-26
    相关资源
    最近更新 更多