2016-02-03 5 views
0

Это часть моего XML:PHP XMLReader - как разбирать этих детей?

<group name="General"> 
    <property name="Farbe">rosa</property> 
    <property name="Breite (mm)">169</property> 
    <property name="...">...</property> 
</group> 

В моем коде, я смотрю на имена узлов, например:

if($nodeName == 'group') { 
    // How to get the children here with attributes and values? 
} 

Я попытался с помощью SimpleXMLElement, но это не сработало.

Спасибо за помощь!

ответ

0

Использование DOMDocument Вы могли бы перебирать XML, как это (не тестировалось):

$strxml='<group name="General"> 
    <property name="Farbe">rosa</property> 
    <property name="Breite (mm)">169</property> 
</group>'; 


$dom=new DOMDocument; 
$dom->loadXML($strxml); 

$colgroups=$dom->getElementsByTagName('group'); 
if($colgroups){ 
    foreach($colgroups as $group){ 
     echo $group->getAttribute('name'); 

     if($group->childNodes->length){ 
      foreach($group->childNodes as $child){ 
       if($child->nodeType==XML_ELEMENT_NODE) echo $child->tagName.' '.$child->getAttribute('name').' '.$child->nodeValue; 
      } 
     } 
    } 
} 
0

Вы можете использовать json_decode в сочетании с json_encode и simplexml_load_string

Разобрать XML как массив

$result ='<group name="General"> 
    <property name="Farbe">rosa</property> 
    <property name="Breite (mm)">169</property> 
</group>'; 
//Will convert Object data to array 
function objectToArray($object){ 
    return json_decode(json_encode($object),true,512,0); 
} 

$xml = objectToArray(simplexml_load_string($result)); 

echo '<pre>';print_r($xml);echo '</pre>'; 
echo $xml['@attributes']['name'];//outputs General 
echo $xml['property'][0];//outputs rosa 
echo $xml['property'][1];//outputs 169 

Разбор строки xml как объекта SimpleXMLElement

$result ='<group name="General"> 
    <property name="Farbe">rosa</property> 
    <property name="Breite (mm)">169</property> 
</group>'; 
$xml2 = simplexml_load_string($result); 
echo '<pre>';print_r($xml2);echo '</pre>'; 
echo $xml2->attributes(); 


echo $xml2->property[0];//outputs rosa 
echo $xml2->property[1];//outputs 169 
Смежные вопросы