Фильтр 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()
Другие вопросы по тегам