2013-10-24 74 views
1

我試着導航使用PHP simplexml_load_string和使用上$文檔的XPath只拿到了「日」塊這樣的類似這樣的($ DOC)的XML塊:當名稱包含特殊字符時如何獲取XML節點內容?

$myday = $doc->xpath ('//Day'); 

,讓我訪問所有數據從塊作爲對象,意思是

$ myday-> AdultCount;

返回1和

$ myday-> Id;

返回 「6a0」

但我無法訪問 「SpecialDeals」 內容不使用:

$myday->SpecialDeals 

也不使用:

$myday->SpecialDeals->a:string 

請告訴我是在這種情況下,正確的語法?

<Days> 
    <DaysId>687</DaysId> 
    <Day> 
     <AdultsCount>1</AdultsCount> 
     <Availability>Available</Availability> 
     <Id>6a0</Id> 
     <RoomType>Studio</RoomType> 
     <SpecialDeals xmlns:a="http://microsoft.com/2003/Arrays"> 
     <a:string>Best Day Ever</a:string> 
     </SpecialDeals> 
    </Day> 
    <DaysPrice>247.4</DaysPrice> 
</Days>"); 
+1

到目前爲止,您還沒有意識到'a:'表示XML中的XML名稱空間前綴,並且您需要在SimpleXML中指定元素名稱旁邊的名稱空間,除非它位於默認名稱空間中。這是一個常見的問題,之前已經詢問過,讓我給你一個現有的答案。 – hakre

+1

並且請記住,沒有*特殊字符*,這是一個用詞不當。所有人物都是平等的。 ;) – hakre

回答

1

您可以使用children()方法在其中冒號(又名命名空間)訪問標籤:

echo $xml->Day->SpecialDeals->children('a', true)->string[0]; 

Demo!

SitePoint article解釋命名空間中的細節。

+0

感謝這工作。 – paoloi

相關問題