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