Sto cercando di determinare l'espressione XPath corretta per restituire il valore dell'attributo xsi:type
sull'elemento Body
. Ho provato quello che sembra tutto senza fortuna. Sulla base di ciò che ho letto, questo sembrerebbe vicino ma ovviamente non è corretto. Qualche guida rapida in modo da poter finalmente riposare?Ottieni il valore di xsi: tipo con xpath
//v20:Body/@xsi:type
voglio per tornare 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'espressione Xpath mi sembra buona. Stai usando questo XPath in XQUERY, XSLT o qualcos'altro? La causa più probabile di un problema qui è la confusione causata dai prefissi dei namespace. Un modo per eliminare gli spazi dei nomi come fonte di confusione è riscrivere il xpath come segue: // * [nome-locale() eq 'Corpo']/@ * [nome-locale() eq 'tipo'] –
Murray ha ragione , perché ci sono generalmente due modi per gestire gli spazi dei nomi in XPath: in primo luogo: usando le funzioni XPath di 'local-name()' e 'namespace-uri()', in secondo luogo: usando i meccanismi appropriati del motore XPath - es. per JAXP standard è necessario utilizzare NamespaceContext configurato correttamente che esegue la mappatura dei prefissi ai namespace. –