假设一个未知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中如何区分?