[英]simplexml_load_file multiple equals nodes
我有這個 XML:
<user>
<name>Name</name>
<jobs>Job 1</jobs>
<jobs>Job 2</jobs>
</user>
我以這種方式讀取文件:
$xml = simplexml_load_file($file->getRealPath());
我可以通過以下方式獲取名稱屬性:
(string) $xml->name
但如果我試試這個:
$jobs = $xml->jobs
我的$jobs
變量中只有一份工作
如何更改我的代碼以從 xml 獲取所有作業?
SimpleXML 中的$xml->jobs
是$xml->jobs[0]
- 也就是說,它只是為您提供具有該名稱的第一個元素。 它讓您可以執行“簡單”的操作,例如$xml->node1->node2->node3->etc
以快速深入到文檔中。
如果你想遍歷所有同名的節點,那么你可以使用標准的foreach
循環(因為它們實現了 PHP 的Traversable
接口):
foreach ($xml->jobs as $job) {
// do something...
}
或者,如果您只想將整個節點集合作為數組獲取(例如,為了將它們傳遞給另一個函數),您可以使用xpath
方法按名稱搜索節點(除其他外):
$jobs = $xml->xpath('jobs');
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.