注文を含む XML ファイルがあります。
<?xml version="1.0" encoding="UTF-8"?>
<orders>
<order order-no="1234567">
<order-date>2012-09-15T12:28:45.000Z</order-date>
<invoice-no>123</invoice-no>
<customer>
<customer-no>1234</customer-no>
<customer-name>test</customer-name>
</customer>
<payments>
<payment>
<custom-method>
<method-name>example</method-name>
</custom-method>
<amount>12334</amount>
</payment>
</payments>
</order>
<order>
.......
</order>
</orders>
<order>
1 つのファイルに多数のノード。すべてが正しいのですが、突然、このような支払い情報なしで注文を受け取ります
<orders>
<order order-no="1234567">
<order-date>2012-09-15T12:28:45.000Z</order-date>
<invoice-no>123</invoice-no>
<customer>
<customer-no>1234</customer-no>
<customer-name>test</customer-name>
<billing-address/>
</customer>
<payments/>
</order>
空の<payments/>
ノードに注意してください。私のPHPスクリプトは次のようになります。
$file = file_get_contents('orders.xml');
$orders = new SimpleXMLElement($file);
foreach ($orders as $order) {
$var = $order->payments->payment->{'custom-method'}->{'method-name'};
}
最初の XML の例ではすべて問題ありませんが、2 番目の XML の例の注文に出くわすと、私のスクリプトは例外Trying to get property of non-object
をスローし、明らかにファイルの残りの解析を停止します。スクリプトを停止せずに、残りのファイルの解析を続行し
たいと考えています。私はあなたに「黙って」オペレーターを望んでいませんが、他に方法はありません.@