XPATH://requestHeader//*[local-name()='clientUsername']
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:req="http://www.ABC.com/ws/requestHeader"
xmlns:web="http://com/ABC/XXX/YYY">
<soapenv:Header/>
<soapenv:Body>
<web:isServiceUp>
<web:requestHeader>
<req:clientUsername>GENT</req:clientUsername>
<req:languageCode>?</req:languageCode>
</web:requestHeader>
</web:isServiceUp>
</soapenv:Body>
</soapenv:Envelope>
假设返回GENT但它返回空字符串......
答案 0 :(得分:2)
试试这个。
//web:requestHeader/req:clientUsername
答案 1 :(得分:2)
您需要具备以下条件:
//web:requestHeader//*[local-name()='clientUsername']
您需要查找web:requestHeader
而不仅仅是requestHeader
:
您可以对此进行测试here。只需requestHeader
即可试用,您会发现它什么也没有返回。当您将其更改为web:requestHeader
时,您将获得您正在寻找的元素。
答案 2 :(得分:1)
requestHeader
元素位于http://com/ABC/XXX/YYY
命名空间中,因此//requestHeader
找不到它(XPath正在 no <中寻找名为requestHeader
的元素/ em> namespace)。您需要使用local-name()
执行相同的clientUsername
技巧,或者使用XPath库提供的任何机制设置适当的前缀绑定,然后在表达式中使用该前缀。
您已将问题标记为“java”,因此如果您使用javax.xml.xpath
,则需要查找setNamespaceContext
method on XPath
。