嗨,伙计们,我想用simplexmlement在php中伪装一个xml文件。

 <OrderResponse>
      <OrderResponseReferences>
           <BuyersOrderNumber Preserve="true">100000002</BuyersOrderNumber>
           <SuppliersOrderReference Preserve="true">6711637</SuppliersOrderReference>
      </OrderResponseReferences>
 </OrderResponse>

我正在使用下面的代码访问BuyerOrderNumber
$local_file_path = "C:/etrade_files/Orders/order_acknowledgements/ORA1707220-05-2015--16-48-31.xml";

$xml = simplexml_load_file($local_file_path);

foreach($xml->children() as $child)
{
    $child = $child->getName();

    if($child == "OrderResponseReferences")
    {
        $order_reference = $xml->$child->BuyersOrderNumber;

        print_r($order_reference);
    }
}

结果:
 SimpleXMLElement Object ( [@attributes] => Array ( [Preserve] => true ) [0] => 100000002 )

我怎么才能得到100000002的订单号
此外,这个文件有多个订单行,如果有人能解释逻辑,我可以用它来获得所有需要的信息,这将真的帮助我。
 <OrderResponseLine>
      <LineNumber>1</LineNumber>
      <OrderResponseLineReferences>
           <BuyersOrderLineReference Preserve="true">100000002</BuyersOrderLineReference>
      </OrderResponseLineReferences>
      <Product>
           <SuppliersProductCode>108696</SuppliersProductCode>
      </Product>
      <Quantity>
           <Amount>2</Amount>
      </Quantity>
      <LineTotal>331.18</LineTotal>
 </OrderResponseLine>

这是我第一次使用XML,如果有人能帮忙,我将不胜感激。谢谢您。

最佳答案

如果将对象强制转换为字符串,它将使用其值并将其转换为:

print_r((string) $order_reference);
// 100000002

我试过你的代码,你做得很好!只要(string)就足以运行脚本。

10-04 10:59