Фильтр XPath на основе значения идентификатора
Снизу XML хочу извлечь Mobile_Number
значения, которые находятся под values/value
тег. Как я могу сделать это универсальным, потому что мы можем иметь несколько вариантов позже вместо одного Mobile_Number
вариант.
<?xml version="1.0" encoding="UTF-8"?>
<Request>
<header>
<businessTransactionID>ABCD</businessTransactionID>
<externalCorrelationID>UABCD</externalCorrelationID>
<sentTimestamp>2016-12-23T14:21:11.261+01:00</sentTimestamp>
<sourceContext>
<host>stackru</host>
<application>browser</application>
<operation>ExtractXMLTAGVALUE</operation>
</sourceContext>
</header>
<body>
<serviceCharacteristic>
<specification>
<ID>Mobile_Number</ID>
</specification>
<values>
<value>13008421</value>
</values>
</serviceCharacteristic>
</body>
</Request>
Я пробовал ниже запросы XPath, но тщетно:
//*[local-name()='name'][text()='Mobile_Number']/../*[local-name()='value']/text()
Ниже приведенный запрос будет работать, но с другой стороны, это не на основе значения идентификатора, который Mobile_Number
-
string(/*/*/*[local-name()='serviceCharacteristic']/*/*[local-name()='value'])
1 ответ
Решение
Как насчет этого?
//serviceCharacteristic[specification/ID='Mobile_Number']/values/value/text()