plgkm6 2019-04-01 16:53
浏览 785

PHP DOMDocument如何遍历所有节点并获取name、value(如果有)、attributes(键值对)?

假设一个未知XML/HTML字符串/文件$doc对象,根节点未知。
假设一个结构体:

class NodeInfo {
    public $name = '';
    public $value = null; //如果没有儿子节点且不是空节点,否则都是null
    public $attributes = []; //key=>value
    public $children = []; //NodeInfo[]
}

如何遍历$doc然后存储到一个NodeInfo中?

我试着用$doc->childNodes获取所有子节点,然后遍历,如果hasChildNodes就继续递归这个函数(函数还没写,我直接在PHPUnit中一个一个循环试了一遍),但是发现几个问题:

1. 根节点遍历了两遍
2. 属性名、节点类型(#text)也都遍历出来了,显然我一脸懵逼,这玩意定义上是node不错但是我是打算在一个node或者element上单独获取的呀?
3. element和node啥区别?不是定义上,是指php中如何区分?

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 求差集那个函数有问题,有无佬可以解决
    • ¥15 MATLAB动图问题
    • ¥15 【提问】基于Invest的水源涵养
    • ¥20 微信网友居然可以通过vx号找到我绑的手机号
    • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
    • ¥15 解riccati方程组
    • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
    • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
    • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
    • ¥50 树莓派安卓APK系统签名