我使用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)时,我返回一个空数组。几个小时以来我一直在搞乱这个问题。我可以使用一些指导。如果您需要更多信息,请告诉我,并提前感谢您的帮助。
答案 0 :(得分:0)
这里有两个问题:
&lt;sup&gt;&#8482;&lt;/sup&gt;
”)请试试这个:
$path = '//service[starts-with(svcdescription, "First-Class Package International Service")]/postage';
$rate = $result->xpath(path);