我无法准备节点表达式
<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>
我有这种包含两个名称空间的xml 1是ns,另一个是默认名称。 我正在尝试使用org.dom4j.XPath获取SubsysId的值并使用
添加命名空间 Map namespaces = new HashMap();
namespaces.put("ns", "http://www.noventus.se/epix1");
namespaces.put("main", "http:www.defaultnamespace.com");
像这样添加这些名称空间
xpath.setNamespaceContext(new SimpleNamespaceContext(namespaces));
这是我的表达
String expression = "/ns:Msg/ns:Header/SubsysId";
我尝试了多种选择,但无法获得价值。
注意:如果我删除默认命名空间并运行,那么我将获得该值。
非常感谢您的帮助。
答案 0 :(得分:1)
自定义namespaces.put("main", "http:www.defaultnamespace.com");
以来
那么你需要在你的xpath中指定它。
所以你的xpath成为:
String expression = "/ns:Msg/ns:Header/main:SubsysId";