访问PHP对象

访问PHP对象,php,xml,xml-parsing,Php,Xml,Xml Parsing,我试图通过PHP访问对象数据。例如,如果我想访问WasSuccess对象,我只需将其编码为:echo$result->TraceShipmentResult->WasSuccess;但是,当我想调用Parties对象下的name数据时,它会变得更加困难,因为类型太多,我不知道如何调用特定的类型。如果我想重复收货人的名字,我会怎么做 <TraceShipmentResult> <CustomerData/> <WasSuccess>

我试图通过PHP访问对象数据。例如,如果我想访问WasSuccess对象,我只需将其编码为:echo$result->TraceShipmentResult->WasSuccess;但是,当我想调用Parties对象下的name数据时,它会变得更加困难,因为类型太多,我不知道如何调用特定的类型。如果我想重复收货人的名字,我会怎么做

<TraceShipmentResult>
        <CustomerData/>
        <WasSuccess>true</WasSuccess>
        <Messages/>
        <Result>
           <Shipment>
              <ErrResponse xmlns="http://tempuri.org/">
                 <Level>0</Level>
                 <Message/>
              </ErrResponse>
              <Parties xmlns="http://tempuri.org/">
                 <Party>
                    <PartyID/>
                    <Type>CONSIGNEE</Type>
                    <Attention/>
                    <Name>H T HACKNEY CO</Name>
                    <PrimaryAddress>
                       <Address1>3580 NW 119TH ST</Address1>
                       <Address2/>
                       <Address3/>
                       <City>MIAMI</City>
                       <State>FL</State>
                       <Zip>33167-2928</Zip>
                       <CountryName/>
                       <CountryCode>USA</CountryCode>
                       <AddressType/>
                    </PrimaryAddress>
                 </Party>
                 <Party>
                    <PartyID/>
                    <Type>SHIPPER</Type>
                    <Attention/>
                    <Name>EXPRESS TRANSPORT BY AIR LLC</Name>
                    <PrimaryAddress>
                       <Address1>870 SPRINGFIELD RD S</Address1>
                       <Address2/>
                       <Address3/>
                       <City>UNION</City>
                       <State>NJ</State>
                       <Zip>07083-8614</Zip>
                       <CountryName/>
                       <CountryCode>USA</CountryCode>
                       <AddressType/>
                    </PrimaryAddress>
                 </Party>
                 <Party>
                    <PartyID/>
                    <Type>BILLER</Type>
                    <Attention/>
                    <Name>WORLDWIDE EXPRESS</Name>
                    <PrimaryAddress>
                       <Address1>2323 VICTORY AVE STE 1600</Address1>
                       <Address2/>
                       <Address3/>
                       <City>DALLAS</City>
                       <State>TX</State>
                       <Zip>75219</Zip>
                       <CountryName/>
                       <CountryCode>USA</CountryCode>
                       <AddressType/>
                    </PrimaryAddress>
                 </Party>
              </Parties>

              .
              .
              .

              </StatusHistory>
              <ErrorMessage xmlns="http://tempuri.org/"/>
           </Shipment>
        </Result>
     </TraceShipmentResult>

真的
0
收货人
哈克尼公司
第119街西北3580号
迈阿密
佛罗里达州
33167-2928
美国
托运人
航空快递有限责任公司
斯普林菲尔德南路870号
联合
新泽西州
07083-8614
美国
比勒
环球快递
圣1600胜利大道2323号
达拉斯
德克萨斯州
75219
美国
.
.
.

您可以像这样访问第一个元素:

echo echo $result->Result->Shipment->Parties->Party[0]->Name;
或:


在parties上循环(它是一个数组),检查您想要的类型,然后在匹配的情况下提取名称。“第一次拉动就打破循环。@劳伦斯·切罗内我编辑了我的答案,这是为了说明卡洛斯在问题中提到的
$result->TraceShipmentResult->wassucture
,那么这可能就是有效的方法。在他的问题中很难说没有任何实际的php代码。@令人难以置信的是,确切地说,我的回答是基于OP在他的问题中所说的,这是在几乎没有什么可继续的情况下,任何人都能做的最好的;)不过,我会使用xpath来减少深度嵌套,并减少大型集合上的内存使用。
$parties = echo $result->Result->Shipment->Parties->Party ;

foreach($parties as $key => $value){
    if($value->Type == "CONSIGNEE") // i'm guessing CONSIGNEE is a type 
        echo $value->Name ;
}