存在默认命名空间问题的Java XPath

存在默认命名空间问题的Java XPath,xpath,Xpath,我无法为表达式准备节点 <ns:Msg xmlns:ns="http://www.noventus.se/epix1" xmlns="http:www.defaultnamespace.com"> <ns:Header> <SubsysId>1</SubsysId> <SubsysType>30003</SubsysType> <Send

我无法为表达式准备节点

    <ns:Msg xmlns:ns="http://www.noventus.se/epix1" xmlns="http:www.defaultnamespace.com">
       <ns:Header>
          <SubsysId>1</SubsysId>
          <SubsysType>30003</SubsysType>
          <SendDateTime>2009-08-13T14:28:15</SendDateTime>
       </ns:Header>
    </ns:Msg>
    String expression = "/ns:Msg/ns:Header/SubsysId";
像这样添加这些名称空间

xpath.setNamespaceContext(new SimpleNamespaceContext(namespaces));
这是我的表情

    <ns:Msg xmlns:ns="http://www.noventus.se/epix1" xmlns="http:www.defaultnamespace.com">
       <ns:Header>
          <SubsysId>1</SubsysId>
          <SubsysType>30003</SubsysType>
          <SendDateTime>2009-08-13T14:28:15</SendDateTime>
       </ns:Header>
    </ns:Msg>
    String expression = "/ns:Msg/ns:Header/SubsysId";
我尝试了多个选项,但无法获得值

注意:如果我删除默认名称空间并运行,那么我将获得该值


非常感谢您的帮助。

因为您定义了
namespace.put(“main”,“http:www.defaultnamespace.com”)
然后需要在xpath中指定它

因此,您的xpath变成:

String expression = "/ns:Msg/ns:Header/main:SubsysId";