2017-05-25 42 views
0

Javaコードの生成を使用しているWSDLファイルがあります。 WSDLファイルには、私は<soap:address>場所を動的に変更することにしたいSOAPアドレスWSDLでSOAPアドレスの場所を動的に設定するにはどうすればよいですか?

<wsdl:service name="SomeService"> 
     <wsdl:port binding="tns:HttpBinding_SomeService" name="HttpBinding_SomeService"> 
      <soap:address location="https://www.someservice.com/testenv/SomeService?client_id=XXXX-XXXXX-XXXX&amp;client_secret=XXXXXXXXXX"/> 
     </wsdl:port> 
</wsdl:service> 

ための次のコードを持っています。 Javaを使ってこれを行う方法はありますか?

答えて

0

DocumentBuilderを使用しますが、機能にこれを書いて、場所を渡して呼び出すことができ、私はちょうど輸入でそれらをグルーミング構文行を与えているとのtry-catch

String filepath = "fakepath\\wsdl.xml"; //Give your wsdl file path 
     DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance(); 
     DocumentBuilder docBuilder = docFactory.newDocumentBuilder(); 
     Document doc = docBuilder.parse(filepath); 

    Node address= doc.getElementsByTagName("soap:address").item(0); 

    NamedNodeMap attr = address.getAttributes(); 
    Node nodeAttr = attr.getNamedItem("location"); 
    nodeAttr.setTextContent("Your new location here"); 

     // write the content into xml file 
     TransformerFactory transformerFactory = TransformerFactory.newInstance(); 
     Transformer transformer = transformerFactory.newTransformer(); 
     DOMSource source = new DOMSource(doc); 
     StreamResult result = new StreamResult(new File(filepath)); 
     transformer.transform(source, result); 

のことを行う方法がありますパラメータとして使用します。また、wsdlファイルを動的に変更します。

0

これは輸入品との完全な例である

import java.io.File; 
import java.io.IOException; 
import javax.xml.parsers.DocumentBuilder; 
import javax.xml.parsers.DocumentBuilderFactory; 
import javax.xml.parsers.ParserConfigurationException; 
import javax.xml.transform.Transformer; 
import javax.xml.transform.TransformerException; 
import javax.xml.transform.TransformerFactory; 
import javax.xml.transform.dom.DOMSource; 
import javax.xml.transform.stream.StreamResult; 

import org.w3c.dom.Document; 
import org.w3c.dom.NamedNodeMap; 
import org.w3c.dom.Node; 
import org.xml.sax.SAXException; 

public class WsdlDynamicPath { 

    public static void main(String[] args) { 
     // TODO Auto-generated method stub 
     try { 
      changePath(); 
     } catch (ParserConfigurationException | SAXException | IOException | 
TransformerException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
    } 

    public static void changePath() throws ParserConfigurationException, SAXException, IOException, TransformerException{ 
     String filepath = "path to wsdl\\demo.wsdl"; //Give your wsdl file path 
     DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance(); 
     DocumentBuilder docBuilder = docFactory.newDocumentBuilder(); 
     Document doc = docBuilder.parse(filepath); 

     Node address= doc.getElementsByTagName("soap:address").item(0); 

     NamedNodeMap attr = address.getAttributes(); 
     Node nodeAttr = attr.getNamedItem("location"); 
     nodeAttr.setTextContent("new path to wsdl"); 

     // write the content into xml file 
     TransformerFactory transformerFactory = TransformerFactory.newInstance(); 
     Transformer transformer = transformerFactory.newTransformer(); 
     DOMSource source = new DOMSource(doc); 
     StreamResult result = new StreamResult(new File(filepath)); 
     transformer.transform(source, result); 
    } 

} 
関連する問題