如何在解析xml文件时修复错误“使用未定义的常量id - 假设'id'”?

时间:2013-01-17 09:51:22

标签: php simplexml

  

可能重复:
  SimpleXML Reading node with a hyphenated name

我解析包含以下字段的xml文件:

<offers>
    <offer>
       <type>Vehicle</type>
       <type-id>2</type-id>
       <category>Car</category>
       <category-id>3</category-id>
       ...
    </offer>
    <offer>
       <type>Vehicle</type>
       <type-id>2</type-id>
       <category>Car</category>
       <category-id>3</category-id>
       ...
    </offer>
    ...
</offers>

首先使用$xml = simplexml_load_file($file);,在尝试获取foreach循环中的值后,我会收到错误&#34;使用未定义的常量ID - 假设&#39; id&#39;&#34;对于字段包含&#39; id&#39;作为其中的一部分,例如&#39; type-id&#39;或&#39; category-id&#39;

 foreach($xml->offers->offer as $offer) {
                    echo $offer->type; // WORKS JUST FINE
                echo $offer->type-id; //THIS GIVE ME ERROR                              
              }      

我尝试设置ini_set('error_reporting', E_ALL & ~E_NOTICE);,但在其后面带有&#39; id&#39;返回零而不是值。

3 个答案:

答案 0 :(得分:4)

变量的名称是“type-id”,不能简单地写成$ type-id,你需要使用大括号来访问它:$ {“type-id”}

echo $offer->{"type-id"};

答案 1 :(得分:1)

试试这个:

foreach($xml->offers->offer as $offer) {
    echo $offer->type;
    $typeId = 'type-id';
    echo $offer->{$typeId};                        
}  

答案 2 :(得分:0)

您必须使用{和}

访问对象/变量
echo $offer->{type-id};