Php simplexml\u加载\u文件多个等于节点
我有以下XML: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获取所有作业
<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');