如何在php中获取xml的所有节点和属性的名称?

时间:2015-04-29 14:27:19

标签: php xml parsing

我正在使用以下代码来获取文件的xml对象:

$xml = simplexml_load_file($tmp_dir);

经过长时间的研究后,我发现如何通过使用foreach循环获取所有节点的值,是否有办法获取名称?我需要它所以我可以解析像magicparse(http://www.magicparser.com/

这样的任何xml

示例输入:

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

欲望输出:

Root
 -@attribute
 -Node 1
 -Node 1/Nested Node
 -Node 2

1 个答案:

答案 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";
        }
    }
}