有一个XML,例如:<?xml version="1.0" encoding="utf-8"?>
<top>
<middle>
<bottom>
<value1>8000</value1>
<value2>8001</value2>
<value3>8002</value3>
</bottom>
</middle>
</top>我想先找到middle,打印情况类似于:
bottom:
value1:8000
value2:8001
value3:8002
我用的是DOM解析代码如下:$mid=$xml2->getElementsByTagName("middle")->item(0);
foreach($mid->childNodes as $v1){
echo $v1->tagName;
foreach($v1->childNodes as $c2){
echo $c2->tagName;
echo $c2->nodeValue;
}
}可以打印出来,但是会出现警告,在foreach那一行,说是参数问题,请问要怎么做呢

解决方案 »

  1.   

    用var_dump($mid->childNodes),看下这是什么类型的吧!
    建议你用simplexml来解析 xml文件,转换为数组,这样处理起来很方便!
      

  2.   

    把换行也当成子节点了。判断一下:
    foreach($mid->childNodes as $v1){
            echo $v1->tagName;
    if($v1->childNodes){
    foreach($v1->childNodes as $c2){
    echo $c2->tagName;
    echo $c2->nodeValue;
    }
    }
        }
      

  3.   

    大神果然是大神,就是这个问题。那我在foreach($v1->childNodes as $c2){
        echo $c2->tagName;
        echo ":";
        echo $c2->nodeValue;
        echo "<br/>";
    }
    为什么会多出现一个:呢
      

  4.   

    一样的道理啊
    <bottom>
                <value1>8000</value1>
                <value2>8001</value2>
                <value3>8002</value3>
    </bottom>
    四个换行,不是输出四队 : 吗?