如何在PHP中迭代DOM元素?

Esa*_*Esa 31 php xml dom

我有一个XML文件加载到DOM文档中,我希望迭代所有'foo'标记,从它下面的每个标记获取值.我知道我可以通过

$element = $dom->getElementsByTagName('foo')->item(0);
foreach($element->childNodes as $node){
    $data[$node->nodeName] = $node->nodeValue;
}
Run Code Online (Sandbox Code Playgroud)

但是,我正在尝试做的是来自XML,

<stuff>
  <foo>
    <bar></bar>
      <value/>
    <pub></pub>
  </foo>
  <foo>
    <bar></bar>
    <pub></pub>
  </foo>
  <foo>
    <bar></bar>
    <pub></pub>
  </foo>
  </stuff>
Run Code Online (Sandbox Code Playgroud)

迭代每个foo标记,获取特定的barpub,并从那里获取值.现在,我如何迭代foo以便仍然可以按名称访问特定的子节点?

ror*_*ryf 43

没有测试,但是怎么样:

$elements = $dom->getElementsByTagName('foo');
$data = array();
foreach($elements as $node){
    foreach($node->childNodes as $child) {
        $data[] = array($child->nodeName => $child->nodeValue);
    }
}
Run Code Online (Sandbox Code Playgroud)