我有一个XML文件给我地址。下面是摘录:处理此XML Feed的最佳方式是什么?
<ezi:orderaddresses>
<ezi:orderaddress>
<ezi:addresstype>billing</ezi:addresstype>
<ezi:name>Jason Fonseca</ezi:name>
<ezi:companyname>Cyber</ezi:companyname>
<ezi:address1>8 springstein</ezi:address1>
<ezi:division>NT</ezi:division>
<ezi:postalcode>34245</ezi:postalcode>
<ezi:countrycode>AU</ezi:countrycode>
<ezi:email>[email protected]</ezi:email>
<ezi:phone>89549854</ezi:phone>
<ezi:mobilephone>984590598</ezi:mobilephone>
</ezi:orderaddress>
<ezi:orderaddress>
<ezi:addresstype>shipping</ezi:addresstype>
<ezi:name>Jason Fonseca</ezi:name>
<ezi:companyname>Cyber</ezi:companyname>
<ezi:address1>8 springstein</ezi:address1>
<ezi:division>NT</ezi:division>
<ezi:postalcode>34245</ezi:postalcode>
<ezi:countrycode>AU</ezi:countrycode>
<ezi:email>[email protected]</ezi:email>
<ezi:phone>89549854</ezi:phone>
</ezi:orderaddress>
</ezi:orderaddresses>
除了上面的两个格式“orderaddress”标签,也可以是一个,例如:
<ezi:orderaddresses>
<ezi:orderaddress>
<ezi:addresstype>billing</ezi:addresstype>
<ezi:name>Jason Fonseca</ezi:name>
<ezi:companyname>Cyber</ezi:companyname>
<ezi:address1>8 springstein</ezi:address1>
<ezi:division>NT</ezi:division>
<ezi:postalcode>34245</ezi:postalcode>
<ezi:countrycode>AU</ezi:countrycode>
<ezi:email>[email protected]</ezi:email>
<ezi:phone>89549854</ezi:phone>
<ezi:mobilephone>984590598</ezi:mobilephone>
</ezi:orderaddress>
</ezi:orderaddresses>
我找到的是利用简单的XML时,要解释这,在一审中,我得到如下:
[orderaddresses] => SimpleXMLElement Object
(
[orderaddress] => Array
(
[0] => SimpleXMLElement Object
(
[addresstype] => billing
[name] => Jason Fonseca
[companyname] => Cyber
[address1] => 8 springstein
[division] => NT
[postalcode] => 34245
[countrycode] => AU
[email] => [email protected]
[phone] => 89549854
[mobilephone] => 984590598
)
[1] => SimpleXMLElement Object
(
[addresstype] => shipping
[name] => Jason Fonseca
[companyname] => Cyber
[address1] => 8 springstein
[division] => NT
[postalcode] => 34245
[countrycode] => AU
[email] => [email protected]
[phone] => 89549854
)
)
)
而在第二种情况下,我得到这个:
[orderaddresses] => SimpleXMLElement Object
(
[orderaddress] => SimpleXMLElement Object
(
[addresstype] => billing
[name] => Jason Fonseca
[companyname] => Cyber
[address1] => 8 springstein
[division] => NT
[postalcode] => 34245
[countrycode] => AU
[email] => [email protected]
[phone] => 89549854
[mobilephone] => 984590598
)
)
Keen观察者会注意到,现在如果我尝试访问 orderaddresses-> orderaddress,这将根据是否有两个地址(或更多)或只有一个地址而具有不同的结构。 示例2它是一个数字索引数组,示例二它是一个关联对象。
为了规范这一点,我已经使用了一些代码,看起来像这样:
if(!isset($content['orderlines']['orderline'][0]))
{
$temp = $content['orderlines']['orderline'];
unset($content['orderlines']['orderline']);
$content['orderlines']['orderline'][0] =$temp;
}
(你可以忽略我使用关联数组这里的事实,我有一个例程执行转换,但我已经检查,这个例程不会改变结果)。
我的问题是,我应该如何正确地插入这些数据?每次尝试访问orderaddress和命令行时都会有这样的代码片断,实在太乱了。没有更好的方法吗?
编辑我的转换例程来处理这个想法已经超越了我的想法。如果你认为这是一条路,那么让我知道,但我认为自己肯定会遇到这个问题,而且有人必须有一个明智而简单的解决方案呢?
感谢
酷感谢,我会试试看,但看起来像去 – Jason 2010-12-02 04:59:07