<?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怎么取?
求助啊...
<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怎么取?
求助啊...
'bbb' => array(
'@attributes' => array(
'name1' => 111,
'name2' => 222,
'name3' => 333,
'name4' => 444,
'name5' => 28,
'name6' => 555
)
)
)
echo $arr['bbb']['attributes']['name2'];
'bbb' => array(
'@attributes' => array(
'name1' => 111,
'name2' => 222,
'name3' => 333,
'name4' => 444,
'name5' => 28,
'name6' => 555
)
)
);
echo $arr['bbb']['@attributes']['name2'];
/*
输出:222
*/
我直接给 数组$arr赋值,
用
echo $arr['bbb']['@attributes']['name2'];
就能输出: 222从xml都出来的数组就不行. 数组是一样的, 太奇怪了..
<?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]
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 ) ) ) )
<?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;
}
这样就搞定了, 疏忽了.
{
$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>';
}