加入收藏 | 设为首页 | 会员中心 | 我要投稿 安卓应用网 (https://www.0791zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > PHP > 正文

php – 如何获取simplexml对象的所有元素

发布时间:2020-05-25 09:02:10 所属栏目:PHP 来源:互联网
导读:好的,我完全被这里难住了.我发现了类似的问题,但答案似乎不适用于我的具体问题.我已经开了好几天了. 我在这里有这个simplexml对象(它实际上比这更长,很多,但是我正在删除所有无关的东西,所以你实际上会看到它): SimpleXMLElement Object( [SubjectClassifica

好的,我完全被这里难住了.我发现了类似的问题,但答案似乎不适用于我的具体问题.我已经开了好几天了.

我在这里有这个simplexml对象(它实际上比这更长,很多,但是我正在删除所有无关的东西,所以你实际上会看到它):

SimpleXMLElement Object
(
    [SubjectClassification] => Array
        (
            [0] => SimpleXMLElement Object
                (
                    [@attributes] => Array
                        (
                            [Authority] => Category Code
                            [Value] => s
                            [Id] => s
                        )

                )

            [1] => SimpleXMLElement Object
                (
                    [@attributes] => Array
                        (
                            [Authority] => Subject
                            [Value] => Sports
                            [Id] => 54df6c687df7100483dedf092526b43e
                        )

                )

            [2] => SimpleXMLElement Object
                (
                    [@attributes] => Array
                        (
                            [Authority] => Subject
                            [Value] => Professional baseball
                            [Id] => 20dd2c287e4e100488e5d0913b2d075c
                        )

                )

        )

)

我通过对包含以下内容的变量执行print_r来获取此代码块:

$subjects->SubjectClassification->children();

现在,我想了解subjectClassification数组的所有元素.他们都是!但是当我这样做时:

$subjects->SubjectClassification;

或这个:

$subjects->SubjectClassification->children();

或者,如果我尝试通过循环获取所有数组元素,我得到的是:

SimpleXMLElement Object
(
    [@attributes] => Array
        (
            [Authority] => Category Code
            [Value] => s
            [Id] => s
        )

)

为什么?我怎样才能得到一切?

您可以使用xpath执行此操作.它是我找到的最简单的方法和最有效的方法,并减少了对大量for循环的需求,以及解决项目的问题.要获得所需的所有节点,您可以使用:

如果你的xml是这样的:

<Subjects>
<SubjectClassification>
</SubjectClassification>
<SubjectClassification>
</SubjectClassification>
<SubjectClassification>
</SubjectClassification>
</Subjects>

然后,要获得数组中的所有主题分类,您可以执行以下操作:

$subject_classifications = $xml->xpath("//SubjectClassification");

xml变量引用主simplexml对象,即使用simplexml加载的文件.

然后你可以使用这样的foreach循环迭代数组:

foreach($subject_classifications as $subject_classification){
echo (string) $subject_classification->Authority;
echo (string) $subject_classification->Value;
echo (string) $subject_classification->Id;
}

你的结构可能会有所不同,但无论如何你都会有所了解你可以在这里看到一篇来自IBM的好文章“Using Xpath With PHP”:

(编辑:安卓应用网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读