gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:41:39 26 4
gpt4 key购买 nike

好吧,我完全被难住了。我发现了类似的问题,但答案似乎不适用于我的具体问题。几天来我一直在断断续续地研究这个问题。

我这里有这个 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" :

关于php - 如何获取 simplexml 对象的所有元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16991087/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com