2015-04-29 6 views
0

Я использую следующий код, чтобы получить объект XML файла:Как получить имена всех узлов и атрибутов xml в php?

$xml = simplexml_load_file($tmp_dir); 

и после долгих исследований я обнаружил, как получить значение всех узлов с помощью цикла Еогеаспа, есть способ получить имена? Мне это нужно, так что я могу разобрать любой XML как magicparse (http://www.magicparser.com/)

Примера ввод:

<?xml version="1.0"?> 
<Root attribute="example_attribute"> 
    <Node 1> 
    <Nested Node> 
    <Nested Node> 
    </Node 1> 
    <Node 2> 
    </Node 2> 
</Root> 

выход Желания:

Root 
[email protected] 
-Node 1 
-Node 1/Nested Node 
-Node 2 
+1

Ваша цель в этом? –

+0

моя цель - разобрать любой XML-файл, чтобы сгенерировать соответствующий код с разобранным структурированным –

+0

Пожалуйста, введите образец ввода и ваш желаемый результат. –

ответ

1

Это позволит получить весь узел и имена атрибутов

<?php 

$xf = file_get_contents($xmlFileName); 
$xml = simplexml_load_string($xf); 

displayNode($xml, 0); 

function displayNode($node, $offset) { 

    if (is_object($node)) { 
     $node = get_object_vars($node); 
     foreach ($node as $key => $value) { 
      echo str_repeat(" ", $offset) . "-" . $key . "\n"; 
      displayNode($value, $offset + 1); 
     } 
    } elseif (is_array($node)) { 
     foreach ($node as $key => $value) { 
      if (is_object($value)) 
       displayNode($value, $offset + 1); 
      else 
       echo str_repeat(" ", $offset) . "-" . $key . "\n"; 
     } 
    } 
} 
+0

Спасибо, это работает очень хорошо, когда xml не имеет пространства имен, по какой-то причине он ничего не отображает, когда у документа есть один, например . –

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