J'essaye de déterminer l'expression XPath correcte pour retourner la valeur de l'attribut xsi:type
sur l'élément Body
. J'ai essayé ce qui semble tout sans chance. Sur la base de ce que j'ai lu, cela semble proche, mais ce n'est évidemment pas correct. Des conseils rapides pour que je puisse enfin me reposer?Récupère la valeur de xsi: type avec xpath
//v20:Body/@xsi:type
Je veux qu'il revienne v20:SmsMessageV1RequestBody
<v20:MessageV1Request>
<v20:Header>
<v20:Source>
<v20:Name>SOURCE_APP</v20:Name>
<v20:ReferenceId>1326236916621</v20:ReferenceId>
<v20:Principal>2001</v20:Principal>
</v20:Source>
</v20:Header>
<v20:Body xsi:type="v20:SmsMessageV1RequestBody">
<v20:ToAddress>5555551212</v20:ToAddress>
<v20:FromAddress>11111</v20:FromAddress>
<v20:Message>TEST</v20:Message>
</v20:Body>
</v20:MessageV1Request>
L'expression Xpath me semble bonne. Utilisez-vous ce XPath dans un XQUERY, un XSLT ou autre chose? La cause la plus probable d'un problème ici est la confusion causée par les préfixes d'espace de noms. Une façon d'éliminer les espaces de noms comme une source de confusion est de réécrire le xpath comme suit: // * [nom-local() eq 'Corps']/@ * [nom-local() eq 'type'] –
Murray a raison , car il y a généralement deux façons de traiter les espaces de noms dans XPath - premièrement: en utilisant les fonctions XPath 'local-name()' et 'namespace-uri()', ensuite: en utilisant les mécanismes appropriés du moteur XPath - par exemple Pour JAXP standard, vous devez utiliser NamespaceContext correctement configuré qui mappe les préfixes aux espaces de noms. –