使用Java将包含XML的字符串添加到SOAPElement

时间:2016-10-14 10:53:59

标签: java xml soap

我必须将excel文件中的数据作为XML发送到Web服务。表中的数据看起来有点像这样: see example of table here!

第一行始终包含列数据的XML标记。大多数数据列只包含字符串,但有些只有xml。这些子节点对Webservice接受数据很重要。

我正在使用SOAP,为每个列创建一个新的SOAPElement,其中每一行都是一个新的SOAP请求。

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

这适用于字符串值,但SOAPElement会转义所有“<”和“>”用xml的细胞。

我已经找到了答案并找到了解决类似问题的方法,但没有一个适合我的......

1 个答案:

答案 0 :(得分:3)

您应该向SoapElement添加一个Node。 我通过在soap标头的SoapElement中添加SAML令牌来做类似的事情:

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);

我希望它很有用。