我在這個例子格式的XML:XPath的錯誤 - 默認(無前綴)命名空間URI XPath查詢始終是「」
<ExternalEvent xmlns="http://www.redeyedmonster.co.uk/Integration/ESB">
<EventType>Create</EventType>
<Message>SomeMessage</Message>
<ServiceRequestId>75a144b8-5a11-e311-bd23-0050569f00cc</ServiceRequestId>
<SourceSystem>MySource</SourceSystem>
</ExternalEvent>
,我堅持了下來。
我想評估EventType節點的值。我曾嘗試:
/ExternalEvent/EventType
和
/*[local-name() = 'ExternalPath' and *[local-name() = 'EventType']]
和
/*[local-name()='ExternalEvent' and namespace-uri()='http://www.redeyedmonster.co.uk/Integration/ESB']/*[local-name()='EventType' and namespace-uri()='http://www.redeyedmonster.co.uk/Integration/ESB']
以及許多其他變化。然而,在XPath Tester我總是得到同樣的錯誤是:
默認(無前綴)命名空間URI XPath查詢始終是「」,它不能被重新定義爲「http://www.redeyedmonster.co.uk/Integration/ESB」。
如果刪除了命名空間的短語(的xmlns =「http://www.redeyedmonster.co.uk/Integration/ESB」)從XML那麼我能夠評估事件的值類型沒有問題,但不幸的是,我被這種格式的XML卡住了,它不能改變我的解決方案。
有沒有辦法解決這個問題?我相信這可能是我在ESB解決方案中遇到的路由問題的根本原因。
最後一個選項應該可以正常工作,但處理XPath中的命名空間的常用方法是將URI綁定到前綴,然後在表達式中使用該前綴(例如'/ esb:ExternalEvent/esb:EventType')。具體如何聲明前綴綁定在不同XPath引擎之間有所不同 - 您使用什麼工具或庫來執行這些XPath表達式? –
該錯誤消息似乎是您正在使用的測試程序的限制,而不是您嘗試測試的表達式的問題。 –
我實際上試圖解決這個BizTalk ESB消息傳播代理擴展器,看起來不想玩:( – RedEyedMonster