Php simplexml不确定如何访问标记的属性值
我有一个xml文件。它是如何形成的:Php simplexml不确定如何访问标记的属性值,php,simplexml,Php,Simplexml,我有一个xml文件。它是如何形成的: <?xml version="1.0"?> <export> <config> <exported_values> <value1>Dog</value1> <value2>Cat</value2> <value3>Bird</value3>
<?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 />';
}
}
if(!$xml=simplexml\u加载文件('xml/test.xml')){
echo“无法加载XML文件”;
}否则{
foreach($xml作为$item)
{
回显“项目:”。$item->config->item['name']。
;
}
}
但这不会带来任何回报。我遗漏了什么吗?您的问题在于尝试从XML节点访问属性的方式。只需将您的foreach代码更新为:
foreach( $xml->config->item as $item )
{
echo 'item: ', $item->attributes()->name, '<br />';
}
foreach($xml->config->item as$item)
{
回显“item:”,$item->attributes()->name,
;
}
输出:
项目:橙色
项目:蓝色
项目:黄色
项目:绿色
.您的
$item->config->item
和$item
方法错误:
项只出现一次,因此在循环中每次访问它都没有意义
$xml
表示
节点,您希望在单个
节点中的多个
节点上循环,因此循环应为:
foreach( $xml->config->item as $item )
然后,$item
将表示循环中每个特定的
节点,因此访问属性将非常简单:
echo $item['name'];
这是。您的XML无效。您的结束标记实际上都没有关闭。您应该会收到几十条警告以及“无法加载XML文件”:-?这是你的真实代码吗?不,对不起,信息是敏感的,所以我没有包括实际的文件。我将纠正tagsOk的非关闭问题。我重新测试了它,现在文件加载正常。不要获取错误,但项不返回任何内容,因此我猜这是代码的问题,而不是XML。没有必要求助于
->attributes()
的冗长。在这里,您可以使用$item['name']
:。谢谢@IMSoP,我不知道。
echo $item['name'];