php - 除了 ->ownerDocument->saveXML() 是否有其他方法来获取带有标签的节点 html
问题描述
众所周知,要获取带有内部标签的节点 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])
还有更短的方法吗?
解决方案
你没有很好地理解是什么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));
推荐阅读
- angular - 打字稿:创建方法时对象可能为空
- google-cloud-platform - GCP 权限块
- swift - SwiftUI Path 对象的字符串格式是标准的吗?
- python - 这是创建对象的好方法吗?
- excel - 如何使用图片的URL在excel中将图片作为图片插入
- android - android studio firestore 查询快照异常(使用 whereEqualTo)
- javascript - 如何隐藏模式并单击显示另一个
- firebase - 从实时数据库中读取数据
- android - Android Studio 不渲染布局
- reactjs - React 故事书:更新控件中的一个参数会更改另一个参数