Php simplexml\u加载\u文件多个等于节点

Php simplexml\u加载\u文件多个等于节点,php,xml,Php,Xml,我有以下XML: <user> <name>Name</name> <jobs>Job 1</jobs> <jobs>Job 2</jobs> </user> 我可以通过以下方式获取名称属性: (string) $xml->name 但如果我尝试这样做: $jobs = $xml->jobs 我的$jobs变量中只有一个作业 如何更改代码以从xml获取所有作业

我有以下XML:

<user>
    <name>Name</name>
    <jobs>Job 1</jobs>
    <jobs>Job 2</jobs>
</user>
我可以通过以下方式获取名称属性:

(string) $xml->name
但如果我尝试这样做:

$jobs = $xml->jobs
我的
$jobs
变量中只有一个作业


如何更改代码以从xml获取所有作业?

$xml->jobs
在SimpleXML中是
$xml->jobs[0]
的缩写-也就是说,它只获取具有该名称的第一个元素。它可以让你做一些“简单”的事情,比如
$xml->node1->node2->node3->etc
,快速深入到文档中

如果要在所有同名节点上循环,则可以使用标准的
foreach
循环(因为它们实现了PHP接口):

或者,如果只想将整个节点集合作为数组获取(例如,为了将它们传递给另一个函数),可以使用
xpath
方法按名称搜索节点(除其他外):


请参见

maybe
print\r($xml->jobs,true)值得一试吗?我需要的是从我的XML中获得两份工作,而我只有一份使用我的代码。无需打印如果您尝试打印,它们是否都会出现?其中一个显示时不带true。正在传递的true print\r为空
$jobs = $xml->jobs
foreach ($xml->jobs as $job) {
  // do something...
}
$jobs = $xml->xpath('jobs');