【发布时间】:2016-02-02 14:51:43
【问题描述】:
我正在与this XML 合作。这是我代码中 API 响应中的一个字符串,但我把它放在那里是为了方便查看。
您会看到它有一个 <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> 节点WHERE /ExternalTransaction/ExternalTransactionID = $txn_id"
【问题讨论】: