XPath错误 - XPath查询的默认(无前缀)命名空间URI始终为''

时间:2013-08-30 10:24:06

标签: xml xpath

我在这个示例格式中有XML:

<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中我总是得到同样的错误:

  

XPath查询的默认(无前缀)名称空间URI始终为'',并且无法将其重新定义为“http://www.redeyedmonster.co.uk/Integration/ESB”。

如果我从XML中删除命名空间短语(xmlns =“http://www.redeyedmonster.co.uk/Integration/ESB”),那么我能够评估事件类型的值没有问题但不幸的是我是坚持使用这种格式的XML,并且无法为我的解决方案进行更改。

有没有办法解决这个问题?我相信它可能是我在ESB解决方案中遇到路由问题的根本原因。

1 个答案:

答案 0 :(得分:1)

您是否尝试通过使用表达式直接获取EventType数据来获取节点,或者您甚至可以尝试像[//*local-name()='EventType']那样不使用和。