我正在與this XML合作。這是來自代碼中API響應的字符串,但我將其放在那裏以便於查看。如何使用XPath執行WHERE語句?
您會看到它有一個<TransactionArray>
節點,其中有多個<Transaction>
節點。現在我正在執行此操作,以便從LAST節點中獲取<TransactionID>
值,而不管有多少。
$DOM = new DOMDocument();
$DOM->loadXML($string);
$XPath = new DOMXPath($DOM);
$XPath->registerNamespace("ns","urn:ebay:apis:eBLBaseComponents");
$eBayTransIDs = $XPath->query("/ns:GetItemTransactionsResponse/ns:TransactionArray/ns:Transaction/ns:TransactionID/text()");
$eBayTransIDsLength = $eBayTransIDs->length;
if($eBayTransIDsLength > 0)
$eBayTransID = $eBayTransIDs->item($eBayTransIDsLength - 1)->data;
else
$eBayTransID = '';
可正常工作,在大多數情況下將是最近的訂單,但它並不是完美的邏輯,並可能導致一個問題,如果兩個人購買在同一時間。我需要更精確。
在<Transaction>
節點內部,您將看到/ExternalTransaction/ExternalTransactionID
,並且我的代碼中可以使用該值。不過,我無法弄清楚如何在XPath中指定它。
基本上,我需要的是「搶<Transaction>
節點,在/ExternalTransaction/ExternalTransactionID = $txn_id"
感謝一堆! –