2016-10-14 13 views
2

ExcelのデータファイルをXMLとしてWebサービスに送信する必要があります。テーブルのデータは、次のようになります。 see example of table here!Javaを含むSOAPElementにXMLを含む文字列を追加する

最初の行には常に列のデータのXMLタグが含まれています。ほとんどのデータ列は文字列を保持しますが、一部のものはxmlを保持します。これらの子ノードは、Webサービスがデータを受け入れるために重要です。

私はすべての行が新しいSOAP要求である各列に新しいSOAPElementを作成するSOAPを使用しています。

SOAPElement newElement = body.addChildElement(tagForThisColumn); 
newElement.addTextNode(stringValueOfCell); 

これは、文字列値のために完璧に動作しますが、のSOAPElementは、XMLを用いた細胞のすべて「<」と「>」をエスケープします。

私はすでに答えを検索し、類似の問題にはいくつかの解決策を見つけましたが、どれもフィット鉱山..

答えて

2

あなたはSOAPElementにノードを追加する必要があります。私はそれが有用であると思います

SOAPHeader header = envelope.addHeader(); 

SOAPElement security = header.addChildElement("Security", "wsse", 
    "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"); 

DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance(); 

documentBuilderFactory.setNamespaceAware(true); 

DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder(); 
File file = new File("your-file.xml"); 

/* parse existing file to DOM */ 
Document document = documentBuilder.parse(new FileInputStream(file)); 

Document securityDoc = security.getOwnerDocument(); 
Node newNode = securityDoc.importNode(document.getFirstChild(), true); 

//Add the Node 
security.appendChild(newNode); 

: 私は、SOAPヘッダにSOA​​PElementにSAMLトークンを追加することにより、同様のものを行っています。

関連する問題