除了 - > ownerDocument-> saveXML()之外还有其他方式来获取带标签的节点html

时间:2018-06-06 18:05:12

标签: php domdocument

我们知道,要获得带有内部标记的节点html,我们必须使用

$node->ownerDocument->saveXML($node);

而不是

$node->nodeValue;

因为最后一个方法剥离了所有内部标记

但是如果我得到像

这样的节点呢?
$dom->getElementsByTagName('tr')[2]->getElementsByTagName('td')[5]

如何在不使用

这样的行的情况下使用内部标记获取其html
$dom->getElementsByTagName('tr')[2]->getElementsByTagName('td')[5]->ownerDocument->saveXML($dom->getElementsByTagName('tr')[2]->getElementsByTagName('td')[5])

还有另一种更短的方式吗?

1 个答案:

答案 0 :(得分:1)

你并不清楚DOMNode::ownerDocument是什么。此属性仅返回DOMDocument实例所属的DOMNode实例(代码中为$dom)。

所以你可以用以下代码替换你的长行:

$cell = $dom->getElementsByTagName('tr')[2]->getElementsByTagName('td')[5];
echo $dom->saveXML($cell);

请注意,您还可以使用DOMXPath缩短代码。

$xp = new DOMXPath($dom);
echo $dom->saveXML($xp->query('//tr[3]/td[6]')->item(0));