我们知道,要获得带有内部标记的节点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])
还有另一种更短的方式吗?
答案 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));