<?xml version="1.0" encoding="utf-8" ?>
<xml>
<bbb name1="111" name2="222" name3="333" name4="444" name5="28" name6="555" />
<bbb name1="aaa" name2="bbb" name3="cc" name4="ddd" name5="eee" name6="fff" />
</xml>
我要获取 name2---------------------------------------------------------读取xml后 返回数组.
Array ( [bbb] => Array ( [@attributes] => Array ( [name1] => 111 [name2] => 222 [name3] => 333 [name4] => 444 [name5] => 28 [name6] => 555 ) ) ) 还是要取name2怎么取?
 求助啊...

解决方案 »

  1.   

    $arr = array(
    'bbb' => array(
    '@attributes' => array(
    'name1' => 111,
    'name2' => 222,
    'name3' => 333,
    'name4' => 444,
    'name5' => 28,
    'name6' => 555
    )
    )
    )
    echo $arr['bbb']['attributes']['name2'];
      

  2.   

    $arr = array(
    'bbb' => array(
    '@attributes' => array(
    'name1' => 111,
    'name2' => 222,
    'name3' => 333,
    'name4' => 444,
    'name5' => 28,
    'name6' => 555
    )
    )
    );
    echo $arr['bbb']['@attributes']['name2'];
    /*
    输出:222
    */
      

  3.   

    可是不出来.  奇怪了.
    我直接给 数组$arr赋值, 

    echo $arr['bbb']['@attributes']['name2'];
    就能输出:  222从xml都出来的数组就不行.  数组是一样的,  太奇怪了..
      

  4.   


    <?php
    function objectsIntoArray($arrObjData, $arrSkipIndices = array())
    {
        $arrData = array();
       
        if (is_object($arrObjData)) {
            $arrObjData = get_object_vars($arrObjData);
        }
       
        if (is_array($arrObjData)) {
            foreach ($arrObjData as $index => $value) {
                if (is_object($value) || is_array($value)) {
                    $value = objectsIntoArray($value, $arrSkipIndices); 
                }
                if (in_array($index, $arrSkipIndices)) {
                    continue;
                }
                $arrData[$index] = $value;
            }
        }
        return $arrData;
    }$xmlUrl = "1.xml"; 
    $xmlStr = file_get_contents($xmlUrl);
    $xmlObj = simplexml_load_string($xmlStr);
    $arrXml = objectsIntoArray($xmlObj);echo "原有数据:<br>";
    print_r($arrXml);
    echo "<br>结果:".$arrXml['bbb']['@attributes']['name2'];echo "<br><br><br>";
    echo "现有数据:<br>";
    $arr = array(
        'bbb' => array(
            '@attributes' => array(
                'name1' => 111,
                'name2' => 222,
                'name3' => 333,
                'name4' => 444,
                'name5' => 28,
                'name6' => 555
            )
        )
    );
    print_r($arr);
    echo "<br>结果:".$arr['bbb']['@attributes']['name2'];
    ?>[code=XML]
    <?xml version="1.0" encoding="utf-8" ?>
    <xml>
    <bbb name1="111" name2="222" name3="333" name4="444" name5="28" name6="555" />
    <bbb name1="aaa" name2="bbb" name3="cc" name4="ddd" name5="eee" name6="fff" />
    </xml>
    [/code]
      

  5.   

    读取xml返回的数组:
    Array ( [bbb] => Array ( [0] => Array ( [@attributes] => Array ( [name1] => 111 [name2] => 222 [name3] => 333 [name4] => 444 [name5] => 28 [name6] => 555 ) ) [1] => Array ( [@attributes] => Array ( [name1] => aaa [name2] => bbb [name3] => cc [name4] => ddd [name5] => eee [name6] => fff ) ) ) ) 
      

  6.   

    $xml =<<< XML
    <?xml version="1.0" encoding="utf-8" ?>
    <xml>
    <bbb name1="111" name2="222" name3="333" name4="444" name5="28" name6="555" />
    <bbb name1="aaa" name2="bbb" name3="cc" name4="ddd" name5="eee" name6="fff" />
    </xml>
    XML;$p = new SimpleXMLElement($xml);foreach($p->bbb as $x) {
      foreach($x->attributes() as $k=>$v)
        if($k == 'name2') echo $v;
    }
      

  7.   

    echo $arrXml['222'][0]['@attributes']['name2']; 
    这样就搞定了,  疏忽了.
      

  8.   

    function objectsIntoArray($arrObjData, $arrSkipIndices = array())
    {
        $arrData = array();
       
        if (is_object($arrObjData)) {
            $arrObjData = get_object_vars($arrObjData);
        }
       
        if (is_array($arrObjData)) {
            foreach ($arrObjData as $index => $value) {
                if (is_object($value) || is_array($value)) {
                    $value = objectsIntoArray($value, $arrSkipIndices); 
                }
                if (in_array($index, $arrSkipIndices)) {
                    continue;
                }
                $arrData[$index] = $value;
            }
        }
        return $arrData;
    }$xmlUrl = "1.xml"; 
    $xmlStr = file_get_contents($xmlUrl);
    $xmlObj = simplexml_load_string($xmlStr);
    $arrXml = objectsIntoArray($xmlObj);
    if($arrXml)foreach($arrXml['bbb'] as $item){
    echo $item['@attributes']['name2'], '<br>';
    }
      

  9.   

    打印你读取XML的内容,看看是数组还是对象