用PHP

2010-02-17 31 views
0

提取XML我知道如何使用使用simplexml_load_file获得XML的结果,如果XML格式是用PHP

<bowlcontents> 
    <banana>yellow</banana> 
    <apple>red</apple> 
</bowlcontents> 

不过,我有一些代码,格式为

<bowlcontents> 
    <fruit type="banana" skin="yellow" /> 
    <fruit type="apple" skin="red" /> 
</bowlcontents> 

,我想以与第一个例子中相同的方式操作它。我将如何做到这一点?

编辑:这正是我想要做的,但下面的代码不起作用。

<?php 
$url = "http://worldsfirstfruitAPI.com/fruit.xml"; 

    $xml = (simplexml_load_file($url)); 


    $results = array(); 
    foreach ($xml->bowlcontents->fruit as $fruit) { 
     $results[] = array(
      $fruit['type'] => $fruit['skin'], 
      ); 
    } 
    return $results; 
} 

?> 

因此,在它的结束,我想有一个数组,键=值:

香蕉=黄色

苹果=红色

...

我希望澄清。谢谢!

回答

6

PHP's manual,属性使用数组符号访问:

$bowlcontents->fruit['type']; 

试想想起来了,你没有在你的问题是什么是你的问题说。如果这是关于遍历节点,可以使用foreach来完成。

/* 
$bowlcontents = simplexml_load_string(
    '<bowlcontents> 
     <fruit type="banana" skin="yellow" /> 
     <fruit type="apple" skin="red" /> 
    </bowlcontents>' 
); 
*/ 

$url = "http://worldsfirstfruitAPI.com/fruit.xml"; 
$bowlcontents = simplexml_load_file($url); 

foreach ($bowlcontents->fruit as $fruit) 
{ 
    echo $fruit['type'], "'s skin is ", $fruit['skin'], "<br/>\n"; 
} 
+0

嗨 - 非常感谢您的回复。我编辑了我的原始问题以澄清我的意思,如果您能相应提供帮助,我将不胜感激。干杯。 – 2010-02-18 13:52:58

+0

答案是一样的。该XML文档的根节点是'',因此PHP变量应该是'$ bowlcontents'以避免混淆。 ''不是孩子,它*是*'$ bowlcontents'。 – 2010-02-18 20:05:18

+0

嗨 - 感谢您的回复。我不想回显“香蕉皮是黄色的”,我想将提取的信息加载到名为'$ results'的数组中。我认为在我的问题中更新的代码会做到这一点,但它似乎并没有工作? 我也刚刚意识到我的XML实际上将'查询'包裹在'bowlcontents'中,所以bowlcontents将是查询的子节点。 谢谢! – 2010-02-19 16:12:49