0
我必須使用美國郵政費率計算器Web工具API查詢該樣品/例如迴應:編寫正確XPath查詢修剪USPS率計算器API XML響應
<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的BEST SHOT:
$rate = $result->xpath('//Service[SvcDescription="*First-Class Package International Service"]/Postage');
當我的var_dump($率),我返回一個空數組。這幾個小時我一直在搞這個。我可以使用一些指導。如果您需要更多信息,請告訴我們,並提前感謝您的幫助。
你所做的第一點是瀏覽器渲染的一個功能。 USPS API是用Pascal Case特別編寫的,我的代碼也是如此。該XML示例是從Chrome的開發工具「複製爲HTML」快捷方式複製的。至於你的第二點,我試着在閱讀你的解決方案之前使用starts-with()做一個謂詞。它似乎也沒有工作!我會用你提出的謂詞來嘗試。 – user3299931
除了您提到的大寫問題實際上不成問題之外,您的代碼也可以工作。 – user3299931