2016-04-25 3 views
-2
<devices> 
    <deviceType>PHONE</deviceType> 
    <account>717</accountId> 
    <attributes> 
     <value>New PHONE 1</value> 
     <key>FRIENDLY_NAME</key> 
    </attributes> 
    <attributes> 
     <value>TRUE</value> 
     <key>DOWNLOAD </key> 
    </attributes> 
    <attributes> 
     <value>1454737</value> 
     <key> TIMESTAMP</key> 
    </attributes> 
    <deviceId>550BDC49DA724C</deviceId> 
    </devices> 
    <devices> 
    <deviceType>WEB</deviceType> 
    <accountId>717</accountId> 
    <attributes> 
     <value>2016-04-11 08:53:52.866;</value> 
     <key>REGISTRATION </key> 
    </attributes> 
    <attributes> 
     <value>TRUE</value> 
     <key>ACTIVE_DEVICE</key> 
    </attributes> 
    <creationDate>146036872</creationDate> 
    <deviceId>997C6AADB51</deviceId> 
    </devices> 

Je dois obtenir la valeur de deviceId OÙ deviceType = TÉLÉPHONE, ou WEB TABLETTE et ce dispositif a des attributs avec clé = DOWNLOAD et valeur = TRUE. Merci pour le bon XPath.XPath difficile avec des conditions plus

Répondre

0

« Je dois obtenir la valeur de deviceId OÙ deviceType = TÉLÉPHONE, TABLETTE ou WEB et ce dispositif a des attributs avec clé = DOWNLOAD et valeur = TRUE »

C'est une façon possible :

//devices[deviceType='PHONE' or deviceType='TABLET' or deviceType='WEB'] 
     [attributes[key='DOWNLOAD' and value='TRUE']] 
/deviceId 

Demo: xpathtester, xpatheval

+0

OP: utiliser 'normaliser l'espace (clé)' si la valeur o f 'key' dans votre XML actuel peut contenir des espaces supplémentaires – har07

+0

merci, c'est juste une erreur – Michal

+0

merci, y at-il une autre façon de faire cela? – Michal