我想解析用php解析一串xml数据流,不是js
$xmlStr = "
<eweb>
<bank>
<response>
<result>
<command-type>GET_SEED</command-type>
<code>10000</code>
<message>Command Successful!</message>
<time>2010-01-01 18:00:01</time>
</result>
<data>
<seed>49831498</seed>
</data>
</response>
</bank>
</eweb>";我怎么样才能遍历所有节点啊,然后取到最后一层的节点名字和节点值,即实现如下
$parserArr = array();
$parserArr['command_type'] = GET_SEED;
$parserArr['code'] = 10000;
$parserArr['message'] = Command Successful!</;
$parserArr['time'] = 2010-01-01 18:00:01;
$parserArr['seed] = 49831498;我是菜鸟,请各位大虾帮忙。

解决方案 »

  1.   


    我在弱弱的问个问题啊,
    SimpleXMLElement Object
    (
        [bank] => SimpleXMLElement Object
            (
                [response] => SimpleXMLElement Object
                    (
                        [result] => SimpleXMLElement Object
                            (
                                [command-type] => GET_SEED
                                [code] => 10000
                                [message] => Command Successful!
                                [time] => 2010-01-01 18:00:01
                            )                    [data] => SimpleXMLElement Object
                            (
                                [seed] => 49831498
                            )                )        ))这玩意怎么用啊?我怎么取某个节点的值?谢谢
      

  2.   

    foreach ($xml->children() as $children) {
        ......
    }
      

  3.   


    $xml = simplexml_load_string($string);
    echo $xml->bank->response->result->code[0];
    如果只想直接要某个值的话,你可以这样
      

  4.   

    function simplexmlToarray($xmlobj) {
    $tmp =array();
    foreach ($xmlobj->children() as $key => $children) {
    $tmp[$key] = !is_object ? $children : simplexmlToarray($children);
    }
    return $tmp;
    }
    $xml = simplexml_load_string($string);
    $xml = simplexmlToarray($xml);写个函数应该是你想要的了
      

  5.   

    <?php
    $xmlStr = <<<STR
    <eweb>
    <bank>
    <response>
    <result>
    <command-type>GET_SEED</command-type>
    <code>10000</code>
    <message>Command Successful!</message>
    <time>2010-01-01 18:00:01</time>
    </result>
    <data>
    <seed>49831498</seed>
    </data>
    </response>
    </bank>
    </eweb>
    STR;$xml = simplexml_load_string($xmlStr);
    $parserArr = array();
    foreach( $xml->bank[0]->response[0]->result[0]->children() as $child){
    $name = $child->getName();
    $parseArr[$name] = (String) $child;
    }
    print_r($parseArr);
    ?>