Java xpath无法获取具有命名空间的节点

Java xpath无法获取具有命名空间的节点,java,xml,xpath,Java,Xml,Xpath,我有一个巨大的xml文档。当我使用xpath=//requestHeader进行测试时,返回的结果如下: <requestHeader> <!--Optional:--> <req:clientCode xmlns:req="http://www.ibb.com/ws/requestHeader">?</req:clientCode> <!--Optional:--> &

我有一个巨大的xml文档。当我使用xpath=//requestHeader进行测试时,返回的结果如下:

  <requestHeader> 
      <!--Optional:-->  
      <req:clientCode xmlns:req="http://www.ibb.com/ws/requestHeader">?</req:clientCode>  
      <!--Optional:-->  
      <req:clientUsername xmlns:req="http://www.ibb.com/ws/requestHeader">CC</req:clientUsername>  
      <!--Optional:-->  
      <req:channel xmlns:req="http://www.ibb.com/ws/requestHeader">?</req:channel>  
      <!--Optional:-->  
    </requestHeader>

?  
科科斯群岛
?  
还有,我需要获取clientUsername值。不幸的是//requestHeader//req:clientUsername返回空字符串。怎么了

您可以使用以下工具进行测试:

尝试在
名称空间上下文中指定
req


将您的命名空间放在xml文件的顶部,如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<requestHeader  xmlns:req="http://www.ibb.com/ws/requestHeader"> 
  <!--Optional:-->  
  <req:clientCode>?</req:clientCode>  
  <!--Optional:-->  
  <req:clientUsername>CC</req:clientUsername>  
  <!--Optional:-->  
  <req:channel>?</req:channel>  
  <!--Optional:-->  
</requestHeader>

您是否在解析器中指定了
req
的命名空间上下文?否,如何指定?取决于您使用的XPath引擎的API,您尚未指定。
 //requestHeader/req:clientUsername