2010-09-15 127 views
0

我有一個XML飼料,看起來像這樣:PHP的SimpleXML選擇屬性

<?xml version="1.0" encoding="UTF-8"?> 
<productFeed version="1.0" timestamp="20100910:04:06:55"> 
<product id="196"> 
    <name>Lorem</name> 
    <price>190.00</price> 
    <description>Lorem Ipsum</description> 
    <productURL> http://www.example.com</productURL> 
    <imageURL> http://www.example.com/lorem.jpg </imageURL> 
    <additional> 
     <field name="country" value="IT" /> 
     <field name="region" value="Rome" /> 
     <field name="city" value="Rome" /> 
    </additional> 
    <categories> 
     <category name="foobar" /> 
    </categories> 
</product> 
</productFeed> 

我想打印出來的類別屬性,除其他事項外與此腳本:

<?php 
$url = 'lorem.xml'; 
$xml = simplexml_load_file($url); 
$expr = "/productFeed//product/additional/field[@value='Rome']/parent::*/parent::*"; 
$result = $xml->xpath($expr); 

foreach($result as $item) { 
    echo $item->name; 
    echo $item->imageURL; 
    echo $item->description; 
    echo $item->price; 
    echo $item->category->attributes()->name; 
} 

這產生:

警告:主()[function.main]:節點不再存在

錯誤雖然FireXPath Firebug插件告訴我我也正確選擇了屬性。

回答

4

您有一個錯字!

它:

echo $item->categories->category->attributes()->name;

不:

echo $item->category->attributes()->name;

的一切:

 
foreach($result as $item) { 
    echo $item->name; 
    echo $item->imageURL; 
    echo $item->description; 
    echo $item->price; 
    echo $item->category->attributes()->name; 
    foreach($item->additional->field as $field) 
    { 
     echo $field["name"]; 
     echo $field["value"]; 
    } 
} 


好運

+0

謝謝,它很尷尬! :P – Lorenzo 2010-09-16 08:16:59