我试图自动化我的亚马逊订单处理。目前,我正在使用Amazon Merchant Transport获取订单的XML文件,但最终,我希望将带有Web服务的XML文件直接发送到我的卖家中央帐户。php亚马逊xml订单处理
与亚马逊订购信息部分阵列 -
Array
(
...
[37] => Array
(
[tag] => NAME
[type] => complete
[level] => 6
[value] => John Smith
)
...
[39] => Array
(
[tag] => ADDRESSFIELDONE
[type] => complete
[level] => 6
[value] => 100 N MAIN St.
)
...
[41] => Array
(
[tag] => CITY
[type] => complete
[level] => 6
[value] => PLANO
)
...
[43] => Array
(
[tag] => STATEORREGION
[type] => complete
[level] => 6
[value] => TX
)
...
[45] => Array
(
[tag] => POSTALCODE
[type] => complete
[level] => 6
[value] => 75075-1948
)
)
我能找回我的订单为XML文档,可以用下面的代码解析。
$contents = file_get_contents("amzn-order-sample.xml");
$p = xml_parser_create();
xml_parse_into_struct($p, $contents, $vals, $index);
xml_parser_free($p);
现在我试图拔出订单相关的信息 - 首先是一个时间信息(发货人姓名,地址)
话,我希望能够得到“有序的项目/数量”信息,这可能是这个客户的1->很多项目。
,我已经工作示例代码 - 检索值(我将投入到另一个阵列进行进一步处理)(很丑)
$arrIt = new RecursiveIteratorIterator(new RecursiveArrayIterator($vals));
// shipper name
foreach ($arrIt as $sub) {
$subArray = $arrIt->getSubIterator();
if ($subArray['tag'] === 'NAME') {
$outputArray[] = iterator_to_array($subArray);
echo "Shipper Name\n";
print_r($outputArray);
}
}
// shipper phone
foreach ($arrIt as $sub) {
$subArray = $arrIt->getSubIterator();
if ($subArray['tag'] === 'BUYERPHONENUMBER') {
$outputArray[] = iterator_to_array($subArray);
echo "Shipper Phone\n";
print_r($outputArray);
}
}
// shipper addresslineone
foreach ($arrIt as $sub) {
$subArray = $arrIt->getSubIterator();
if ($subArray['tag'] === 'ADDRESSFIELDONE') {
$outputArray[] = iterator_to_array($subArray);
echo "Shipper Address\n";
print_r($outputArray);
}
}
// shipper city
foreach ($arrIt as $sub) {
$subArray = $arrIt->getSubIterator();
if ($subArray['tag'] === 'CITY') {
$outputArray[] = iterator_to_array($subArray);
echo "Shipper City\n";
print_r($outputArray);
}
}
// shipper state
foreach ($arrIt as $sub) {
$subArray = $arrIt->getSubIterator();
if ($subArray['tag'] === 'STATEORREGION') {
$outputArray[] = iterator_to_array($subArray);
echo "Shipper State\n";
print_r($outputArray);
}
}
// shipper zip
foreach ($arrIt as $sub) {
$subArray = $arrIt->getSubIterator();
if ($subArray['tag'] === 'POSTALCODE') {
$outputArray[] = iterator_to_array($subArray);
echo "Shipper Zip\n";
print_r($outputArray);
}
}
// items
foreach ($arrIt as $sub) {
$subArray = $arrIt->getSubIterator();
if ($subArray['tag'] === 'POSTALCODE') {
$outputArray[] = iterator_to_array($subArray);
echo "Shipper Zip\n";
print_r($outputArray);
}
}
我要分析每1-许多项目与上面的代码一起循环排序,但必须有更好,更干净的方式.. - 也许有人有他们可以提供的代码片段。
在此先感谢您的任何想法..
一个新手到PHP
一定有很多更好的方法可以做到这类型的代码中使用XML和PHP(这将在Linux服务器上进行处理) - 任何建议或其他想法都非常受欢迎
有人可以包裹他的代码吗? – quantumSoup 2010-07-17 01:06:02
格式化固定。 – 2010-07-17 01:11:04
这么多的代码,很少格式化。 @newbiephper请使用格式选项引用此代码,以便它清晰易读。谢谢@Thomas Owens – 2010-07-17 01:11:31