我试图使用 PHP simplexml_load_string 导航类似于这个 ($doc) 的 XML 块,并在$doc上使用 xpath 来仅获取如下所示的"Day"块:
$myday = $doc->xpath ('//Day');
这让我可以作为对象访问块中的所有数据,这意味着
$myday->成人计数;
返回 1 和
$myday->同上;
返回"6a0"
但是,我无法访问不使用以下"特价"内容:
$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>");
您可以使用
children()
方法访问带有冒号的标签(也称为命名空间):
echo $xml->Day->SpecialDeals->children('a', true)->string[0];
演示!
此 SitePoint 文章详细介绍了命名空间。