我在这个例子格式的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