我有一个带有订单的 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>
节点。一切都是正确的,但突然之间我收到了一个没有任何付款信息的订单
<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 示例,一切都很好,但是当我偶然发现来自第二个 XML 示例的命令时,我的脚本抛出异常Trying to get property of non-object
并且显然停止解析文件的其余部分。
我希望我的脚本不会停止,而是继续解析文件的其余部分。我不想让你成为“闭嘴”@
操作员,但我看不到任何其他方式。