我有一个xml文件。以下是它的形成方式:
<?xml version="1.0"?>
<export>
<config>
<exported_values>
<value1>Dog</value1>
<value2>Cat</value2>
<value3>Bird</value3>
<value4>Mouse</value4>
</exported_values>
<item name="orange" text="this is item 1" />
<item name="blue" text="this is item 2" />
<item name="yellow" text="this is item 3" />
<item name="green" text="this is item 4" />
</config>
</export>
如何在项目中访问name的值?我没试好就试过这个:
if( ! $xml = simplexml_load_file('xml/test.xml') ){
echo 'unable to load XML file';
} else {
foreach( $xml as $item )
{
echo 'item: '.$item->config->item['name'].'<br />';
}
}
但这并不能归还任何东西。我错过了什么吗?
答案 0 :(得分:1)
您的问题与您尝试从XML节点访问属性的方式有关。只需将您的foreach代码更新为:
foreach( $xml->config->item as $item )
{
echo 'item: ', $item->attributes()->name, '<br />';
}
item: orange<br />item: blue<br />item: yellow<br />item: green<br />
答案 1 :(得分:1)
您的$item->config->item
和$item
方式错误:<config>
项目只出现一次,因此每次循环访问它都没有意义。
$xml
表示<export>
节点,并且您希望遍历单个<item>
节点中的几个<config>
节点中的每个节点,因此循环应为:< / p>
foreach( $xml->config->item as $item )
然后$item
将代表循环中的每个特定<item>
节点,因此访问该属性将非常简单:
echo $item['name'];