我有一個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