我从使用 USPS Rate Calculator Web Tool API 的查询中获得了这个示例/示例响应:
<service id="15">
<pounds>0</pounds>
<ounces>15</ounces>
<mailtype>Package</mailtype>
<container>RECTANGULAR</container>
<size>LARGE</size>
<width>2</width>
<length>13</length>
<height>13</height>
<girth>30</girth>
<country>ARGENTINA</country>
<postage>16.25</postage>
<extraservices>
<extraservice>
<serviceid>6</serviceid>
<servicename>Certificate of Mailing</servicename>
<available>True</available>
<price>1.30</price>
</extraservice>
<extraservice>
<serviceid>0</serviceid>
<servicename>Registered Mail</servicename>
<available>True</available>
<price>13.65</price>
</extraservice>
</extraservices>
<valueofcontents>32.25</valueofcontents>
<inscomment>SERVICE</inscomment>
<svccommitments>Varies by destination</svccommitments>
<svcdescription>First-Class Package International Service&lt;sup&gt;&#8482;&lt;/sup&gt;**</svcdescription>
<maxdimensions>Other than rolls: Max. length 24", max length, height and depth (thickness) combined 36"<br>Rolls: Max. length 36". Max length and twice the diameter combined 42"</maxdimensions>
<maxweight>4</maxweight>
</service>
</package>
</intlratev2response>
这是整个响应的一部分。还有其他两个服务元素,但这是我希望返回的节点。(我将父闭包留在底部供您查看,仅供参考。)这些不同服务元素的 ID 似乎是静态的,但 API 中没有任何内容表明它们是可用的。简而言之,我不愿依赖他们。此节点的基本标识符是 SvcDescription = First-Class Package International Service。后面有一些 html 编码的 hooey,但这是我试图定位的元素,并将它的父元素存储在 SimpleXMLElement 中。
这是我在 xpath 上的最佳拍摄:
$rate = $result->xpath('//Service[SvcDescription="*First-Class Package International Service"]/Postage');
当我 var_dump($rate) 时,我返回一个空数组。我已经搞砸了几个小时。我可以使用一些指导。如果您需要更多信息,请告诉我,并提前感谢您的帮助。