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

发布于 2024-10-14 05:26:44 字数 771 浏览 3 评论 0原文

我正在制作一个脚本,它读取传递的 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>

感谢您的任何回复,迈克。

I'm making a script, that reads through the passed XML file and displays the source code. I've got it almost done, but the item attributes .. I can't find a way to catch them. Here's the code:

$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  

As I said, it works fine, but doesn't display the attributes, for example:

<item id=2>Item</item>

returns only the:

<item>Item</item>

Thanks for any responses, Mike.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

世界和平 2024-10-21 05:26:44

除非我读错了你的代码,这样的事情可能应该是正确的。

$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  

Unless I missread your code something like this should probably be about right.

$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  
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文