У меня есть следующий xml
<ReviseInventoryStatusResponse xmlns="urn:ebay:apis:eBLBaseComponents">
<Timestamp>2019-01-02T15:42:31.495Z</Timestamp>
<Ack>Warning</Ack>
<Errors>
<ShortMessage>Requested StartPrice and Quantity revision is redundant.</ShortMessage>
<LongMessage>The existing price and quantity values are identical to those specified in the request and, therefore, have not been modified.</LongMessage>
<ErrorCode>21917091</ErrorCode>
<SeverityCode>Warning</SeverityCode>
<ErrorParameters ParamID="ItemID">
<Value>770386906435</Value>
</ErrorParameters>
<ErrorParameters ParamID="SKU">
<Value/>
</ErrorParameters>
<ErrorClassification>RequestError</ErrorClassification>
</Errors>
<Errors>
<ShortMessage>Requested StartPrice and Quantity revision is redundant.</ShortMessage>
<LongMessage>The existing price and quantity values are identical to those specified in the request and, therefore, have not been modified.</LongMessage>
<ErrorCode>21917091</ErrorCode>
<SeverityCode>Warning</SeverityCode>
<ErrorParameters ParamID="ItemID">
<Value>770386906436</Value>
</ErrorParameters>
<ErrorParameters ParamID="SKU">
<Value/>
</ErrorParameters>
<ErrorClassification>RequestError</ErrorClassification>
</Errors>
...
</ReviseInventoryStatusResponse>
Мне нужно получить ShortMessage для данного ItemID, который находится в ErrorParameters / Value, где ParamID = "ItemID"
был в состоянии проверить, существует ли узел с данным значением:
$xmlr = new DOMDocument();
$xmlr->load('ReviseInventoryStatusResponse_error.xml');
$xpath = new DOMXPath($xmlr);
$xpath->registerNamespace('e', 'urn:ebay:apis:eBLBaseComponents');
$nodeExists=($xpath->query('//e:ErrorParameters[@ParamID="ItemID"]/e:Value[. = "770386906435"]')->length>0)?1:0;
, тогда я попытался получить его ShortMessage с
$xpath->query('//e:Errors[e:ErrorParameters@ParamID="ItemID"]/e:Value[.="770386906435"]/e:ShortMessage')
, но получил неверный предикат, как и ожидалось, так как не нашел нужногоспособ объединить фильтры.
может предложить, пожалуйста, правильный путь?
Спасибо