0
鑑於XML和相關的PHP,下面如何以與獲得非名稱空間值相同的方式獲得名稱空間值?我一直在談論關於此的其他一些SE QA,但似乎無法做到。感謝您的幫助。 :)如何從名稱空間和非名稱空間XML的混合中獲取值
<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:psg="http://b3000.example.net:3000/psg_namespace/">
<channel>
<title>Example</title>
<description>example stuff</description>
<item>
<psg:eventId>406589</psg:eventId>
<psg:duration>3482</psg:duration>
</item>
</channel>
</rss>
$xml = new SimpleXMLElement($source, null, true);
foreach($xml->channel->item as $entry){
echo $entry->title; // This works
echo $entry->description; // This works
echo $entry->item->duration // Pseudo of what I need
}
如何獲得持續時間?我與變化的嘗試,如這已經失敗
$namespaces = $item->getNameSpaces(true);
$psg = $item->children($namespaces['psg']);
更新
雖然這不是我實際上是尋找答案,我必須接受這讓我想的東西,導致第一個答案實際的問題 - 「操作員錯誤」!這樣做的工作....我的問題是在試圖找出它,我正在調試echo print_r($psg, true)
。這顯示了SimpleXmlObject的結果,然後讓我追逐如何獲得這些屬性 - 我所要做的就是分配屬性而不是回顯它。實現這一
foreach($xml->channel->item as $entry){
$psg = $item->children($ns['psg']);
$title = (string) $item->title;
$duration = (string) $psg->duration;
}
您是否嘗試過使用從http://php.net/manual/en/simplexmlelement.children.php方法'children',你在命名空間中通過,並告訴它這是一個前綴,以得到那個節點? – Andy
嗨!這個網站的慣例是問題和答案是分開的,[即使這意味着回答你自己的問題](http://stackoverflow.com/help/self-answer)。因此,您添加的「更新」應該是一個答案,然後您可以接受,向未來的讀者展示這是解決問題的方法。你可以對羅比Averill的回答表示讚賞。 – IMSoP