PHP - 如何使用simpleXML读取XML项的所有属性?

时间:2011-01-22 21:13:53

标签: php xml simplexml

我正在创建一个脚本,它读取传递的XML文件并显示源代码。我已经完成了它,但项目属性..我找不到抓住它们的方法。这是代码:

$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>

感谢任何回复,迈克。

2 个答案:

答案 0 :(得分:1)

答案 1 :(得分:1)

除非我错过了你的代码,否则这样的事情应该是正确的。

$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