2016-12-23 5 views
0

Из-под XML я хочу извлечь Mobile_Number значения, которые находятся под тегом values/value. Как я могу сделать это generic, потому что мы можем иметь несколько опций позже вместо одного Mobile_Number.XPath-фильтр на основе значения ID

<?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>stackoverflow</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() 

Ниже запрос будет работать, но опять же это не на основе ID значения, которое Mobile_Number -

string(/*/*/*[local-name()='serviceCharacteristic']/*/*[local-name()='value']) 

ответ

2

Как насчет этого?

//serviceCharacteristic[specification/ID='Mobile_Number']/values/value/text() 
+0

Спасибо Томас, он работает. –

Смежные вопросы