如何在PHP中迭代DOM元素? [英] How do I iterate through DOM elements in PHP?

查看:97
本文介绍了如何在PHP中迭代DOM元素?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个XML文件加载到DOM文档中,
我希望遍历所有的foo标签,从它下面的每个标签获取值。我知道我可以通过

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

然而,我想要做的是来自一个XML,

 < stuff> 
< foo>
< bar>< / bar>
< value />
< pub>< / pub>
< / foo>
< foo>
< bar>< / bar>
< pub>< / pub>
< / foo>
< foo>
< bar>< / bar>
< pub>< / pub>
< / foo>
< / stuff>

迭代每个 foo 标签,并获取具体的 / em>或 pub ,并从中获取值。
现在,我如何迭代 foo ,以便我仍然可以按名称访问特定的子节点?

解决方案

未测试,但是如何:

  $ elements = $ dom-> getElementsByTagName('foo' ); 
$ data = array();
foreach($ elements as $ node){
foreach($ node-> childNodes as $ child){
$ data [] = array($ child-> nodeName => $儿童安全>的nodeValue);
}
}


I have an XML file loaded into a DOM document, I wish to iterate through all 'foo' tags, getting values from every tag below it. I know I can get values via

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

However, what I'm trying to do, is from an XML like,

<stuff>
  <foo>
    <bar></bar>
      <value/>
    <pub></pub>
  </foo>
  <foo>
    <bar></bar>
    <pub></pub>
  </foo>
  <foo>
    <bar></bar>
    <pub></pub>
  </foo>
  </stuff>

iterate over every foo tag, and get specific bar or pub, and get values from there. Now, how do I iterate over foo so that I can still access specific child nodes by name?

解决方案

Not tested, but what about:

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

这篇关于如何在PHP中迭代DOM元素?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆