我試圖確定正確的XPath表達式以返回Body
元素上xsi:type
屬性的值。我曾嘗試過似乎沒有運氣的一切。根據我讀到的內容看起來很接近,但顯然不適合。任何快速指導,以便我可以終於休息?使用xpath獲取xsi:type的值
//v20:Body/@xsi:type
我想它返回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>
Xpath表達式對我來說很不錯。你是否在XQUERY,XSLT或其他東西中使用這個XPath?這裏問題最可能的原因是名稱空間前綴引起的混淆。消除名稱空間作爲混淆源的一種方法是將xpath重寫爲:// local_ name()eq'Body']/@ * [local-name()eq'type'] – 2012-01-10 23:28:29
Murray is right ,因爲在XPath中通常有兩種方式來處理名稱空間 - 第一種:使用local-name()和namespace-uri()XPath函數,第二種方法是使用適當的XPath引擎機制 - 例如對於標準JAXP,您必須使用正確配置的NamespaceContext,它將前綴映射到名稱空間。 – 2012-01-11 06:14:31