2016-08-05 75 views
1

Ich arbeite an einem Automatisierungsskript, das SoapUI-API-Klassen verwendet, um ein WSDL zu lesen und nach dem dynamischen Füllen von Daten aus einer Excel-Datei auszuführen.Festlegen der SOAP-Anforderung Knotenwert zur Laufzeit mit XmlHolder in Java 1.8

Ich benutze XmlHolder-Klasse, um Soap Request Knoten Werte zu erhalten oder zu setzen, aber ich habe Probleme beim Zugriff auf die Anfrage XML-Knoten mit dem XPath mit XmlHolder. Im Folgenden ist die Musteranforderung und der Code, den ich versucht habe:

// Probe Soap Anfrage

<soapenv:Envelope  xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:web="http://www.webserviceX.NET/"> 
     <soapenv:Header/> 
     <soapenv:Body> 
      <web:ConversionRate> 
      <web:FromCurrency>?</web:FromCurrency> 
      <web:ToCurrency>?</web:ToCurrency> 
      </web:ConversionRate> 
     </soapenv:Body> 
    </soapenv:Envelope> 

     //code 
    XmlHolder xmlHolder = null; 
    try { 
     xmlHolder = new XmlHolder(soapOperation.createRequest(true)); 
     } catch (XmlException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     }; 

     xmlHolder.declareNamespace("web","http://www.webserviceX.NET"); 

     // Here tagCell.getStringCellValue() = FromCurrency 

     System.out.println("FromCurrency= " + request.getNodeValue(".//web:" + tagCell.getStringCellValue())); 
     request.setNodeValue(".//web:" + tagCell.getStringCellValue() , valCell.getStringCellValue()); 

     //Other tried xPath 
     //System.out.println("FromCurrency= " + request.getNodeValue("//web:" + tagCell.getStringCellValue())); 
     //System.out.println("FromCurrency= " + request.getNodeValue("//:" + tagCell.getStringCellValue())); 
     //System.out.println("FromCurrency= " + request.getNodeValue("//*:" + tagCell.getStringCellValue())); 

Kann jemand bitte den XPath für XmlHolder.setNodeValue vorschlagen().

Auch hier zu beachten, dass Soap-Knoten Namespace, d. <web:FromCurrency>

Vielen Dank im Voraus

Antwort

0

Mein schlecht. Es war ein Problem eines fehlenden Glases.

Es ist auch nicht erforderlich, einen Namespace mit XmlHolder anzugeben.

Nun wird der Arbeitscode lautet:

// Code

XmlHolder xmlHolder = null; 
try { 
    xmlHolder = new XmlHolder(soapOperation.createRequest(true)); 
    } catch (XmlException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    }; 

    // Here tagCell.getStringCellValue() = FromCurrency 

    System.out.println("FromCurrency= " + request.getNodeValue("//*:" + tagCell.getStringCellValue())); 
    request.setNodeValue("//*:" + tagCell.getStringCellValue() , valCell.getStringCellValue()); 

Genießen

+0

Frage Knotenwert einstellt mit 'xpath'. Aber es wird geantwortet, fehlende JAR-Datei zu sagen. Es gibt keine Verbindung zwischen Frage und Antwort. – Rao

+0

@Rao, ich glaube, Sie haben nicht die vollständige Antwort gelesen, ich habe Details zur Verwendung der richtigen xPath Weg auch auf die Knotenwerte zugreifen, ohne auch nur einen Namespace für die SOAP-Anfrage/Antwort . Wie auch immer, ich mache dir keine Vorwürfe. Manche Menschen ernähren sich von anderem Müll. Danke für diesen schönen Kommentar. – Riky

+1

Danke @Rupendra, Ihre Antwort hat mir geholfen, ein ähnliches Problem zu lösen. –