如何使用php-xpath查询创建子节点


how to create child nodes with php xpath query

代码是这样的:

$b = $xpath->query('//td[@class="abc"]');
foreach ($b as $b2) { /*contents*/ }

在td内部,这些内容将在那里:

<h2><a href="http://www.example.com/" title="this is link">Link Title</a>
    <span class="spanclass">Spinning</span></h3>
<div class="xyz">ABC XYZ abc xyz</div>
<span class="phr">Style</span>red

如果我打印/echo,"print_r($b2->nodeValue);",内容将是这样的:

Link Title
  Spinning
 ABC XYZ abc xyz
 Style red

现在试过了,每个$b2:里面都有这个代码

foreach ($xpath->query('.//a[@href]', $b2) as $child) {
   print_r($child->nodeValue);
}

答案来了:

Link Title

我需要这些信息从那里:

$title = 'Link Title';
$titlelink = 'http://www.example.com';
$spanclassinfo = 'Spinning';
$stylerandom = 'red';

有什么帮助吗?提前谢谢。

您应该检查它是否具有类似的属性。

获取每个元素中的所有属性

foreach ($b as $b2) {
    if ($b2->hasAttributes()) {
        foreach ($p->attributes as $attr) {
          $name = $attr->nodeName;
          $value = $attr->nodeValue;
          echo 'Attribute ' . $name . ' - ' . $value . '<br />';
        }
    }
}

从元素中获取特定属性

foreach ($b as $b2) {
    if ($b2->hasAttributes()) {
        $titlelink = $b2->attributes->getNamedItem('href')->value;
    }
}

您需要添加一些检查,以确保您试图选择的属性确实存在。这样就不会试图获取span标记上的href属性。