我必须将excel文件中的数据作为XML发送到Web服务。表中的数据看起来有点像这样: see example of table here!
第一行始终包含列数据的XML标记。大多数数据列只包含字符串,但有些只有xml。这些子节点对Webservice接受数据很重要。
我正在使用SOAP,为每个列创建一个新的SOAPElement,其中每一行都是一个新的SOAP请求。
SOAPElement newElement = body.addChildElement(tagForThisColumn);
newElement.addTextNode(stringValueOfCell);
这适用于字符串值,但SOAPElement会转义所有“<”和“>”用xml的细胞。
我已经找到了答案并找到了解决类似问题的方法,但没有一个适合我的......
答案 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);
我希望它很有用。