当名称包含特殊字符时,如何获取 XML 节点内容


How to get XML nodes content when names include special Characters?

我试图使用 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 文章详细介绍了命名空间。