在soap响应JAVA中获取节点值

时间:2016-05-18 19:32:13

标签: java xml soap

我正在尝试从WS SOAP响应中读取2个值。目前我无法这样做,我试过多种方法但没有成功。

我只对OperationStatus和SessionId感兴趣。

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
   <soap:Body>
      <DoLoginResponse xmlns="censored">
         <DoLoginResult>
            <OperationStatus>true</OperationStatus>
            <StatusMessage/>
            <SecurityProfile>
               <User>
                  <UserID>720eeac1-7134-4587-b81d-b7431718c51b</UserID>
               </User>
               <Session>
                  <SessionId>eb63f534-322f-4014-88e0-72e6a6a5b167</SessionId>
               </Session>
               <IsFirstLogon>false</IsFirstLogon>
               <IsSystemOwner>true</IsSystemOwner>
            </SecurityProfile>
            <Authenticated>true</Authenticated>
            <UpgradeRecommended>true</UpgradeRecommended>
         </DoLoginResult>
      </DoLoginResponse>
   </soap:Body>
</soap:Envelope>

这是我到目前为止编码的内容。

SOAPBody sb = response.getSOAPBody();
Node LoginResponse = (Node)sb.getFirstChild();
Node LoginResult = (Node)LoginResponse.getFirstChild();
Node OperationStatus = (Node)LoginResult.getFirstChild();

if(OperationStatus.getFirstChild().getTextContent()=="true"){
      _auth = true;
      _Session = "";//get SessionId here

}else{
      _auth = false;
      return response;
 }

由于某些原因,我永远不会进入我的if语句,因此我不知道如何完成这个。

1 个答案:

答案 0 :(得分:0)

尝试使用getElementsByTagName访问节点,并使用equals方法比较String值。

Node OperationStatus = sb.getElementsByTagName("OperationStatus").item(0); if("true".equals(OperationStatus.getFirstChild().getTextContent())) ...