我正在与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"
感谢一堆! –