2011-01-22 2 views
1

Я создаю скрипт, который читает переданный XML-файл и отображает исходный код. У меня это почти сделано, но атрибуты элемента. Я не могу найти способ их поймать. Вот код:PHP - Как читать все атрибуты элементов XML с помощью simpleXML?

$xml = simplexml_load_file("path/to/file.xml"); 

    showTree($xml->children(), 0); 

    function showTree($value, $i) { 

     if($value == '') { 

      foreach($value as $name2 => $value2) { 

       echo str_repeat('--', $i)." <$name2> \n"; 
        showTree($value2, ($i+1)); 
       echo str_repeat('--', $i)." </$name2> \n"; 
      } 

     } else { echo str_repeat('--', $i)." ".trim($value)."\n"; } 

    } // end: function 

Как я уже говорил, он отлично работает, но не отображает атрибуты, например:

<item id=2>Item</item> 

возвращается только:

<item>Item</item> 

Спасибо за любые ответы, Майк.

ответ

1

Если я не missread код что-то, как это должно быть, вероятно, о праве.

$xml = simplexml_load_file("path/to/file.xml"); 

    showTree($xml->children(), 0); 

    function showTree($value, $i) { 

     if($value == '') { 

      foreach($value as $name2 => $value2) { 

       $attribsStr = ''; 
       foreach($value2->attributes() as $attribName => $attribValue) { 
       $attribsStr .= $attribName . '="' . $attribValue . '"' . ' '; 
       } 

       echo str_repeat('--', $i)." <$name2 $attribsStr> \n"; 
       showTree($value2, ($i+1)); 
       echo str_repeat('--', $i)." </$name2> \n"; 
      } 

     } else { echo str_repeat('--', $i)." ".trim($value)."\n"; } 

    } // end: function 
+0

Это именно то, что я искал! Спасибо. :-) – Mike

Смежные вопросы