在将Xml文件发送到Soap请求时,java中会出现问题
我正在为我的桌面应用程序使用SoapRequst。但是有一个Soap请求,其中我必须发送xml文档,但当我试图添加xml文件means Document时,它被转换成字符串格式,我的意思是all“<;>;”转换为字符串formate“<;”的子句像这样
因此,我应该做些什么来让它们保持XMl格式
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<Update xmlns="http://tempuri.org/">
<doc>xml</doc>
</Update>
</soap:Body>
</soap:Envelope>
当我发送文件时,它会转换成这个
**><Folder><**
一定是这样
<Folder>
你能给我一些宝贵的建议吗?提前谢谢
这是我的方法。 公共静态SOAPMessage UpdateAllGroupWithSwitchUserConfiguration(){
try {
File f = new File("/com/package/package/TreeModel.xml");
BufferedReader br = new BufferedReader(new FileReader(f));
StringBuffer builder = new StringBuffer();
String xml = "";
while ((xml = br.readLine()) != null) {
builder.append(xml.trim());
}
MessageFactory messageFactory = MessageFactory.newInstance();
SOAPMessage soapMessage = messageFactory.createMessage();
SOAPPart soapPart = soapMessage.getSOAPPart();
String serverURI = "http://tempuri.org/";
// SOAP Envelope
SOAPEnvelope envelope = soapPart.getEnvelope();
envelope.addNamespaceDeclaration("tem", serverURI);
SOAPElement sOAPElement = envelope.addChildElement("UpdateAllGroupWithSwitchUserConfiguration", "tem");
String XML_String = builder.toString();
// DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
// DocumentBuilder doc_builder = factory.newDocumentBuilder();
//
// Document document = doc_builder.parse(new InputSource(new StringReader(XML_String)));
//
// TransformerFactory factory1 = TransformerFactory.newInstance();
// Transformer transformer = factory1.newTransformer();
// Source source = new DOMSource(document);
// Result result = new StreamResult(xml);
// transformer.transform(source, result);
SOAPElement xml_APElement = sOAPElement.addChildElement("doc", "tem");
xml_APElement.addTextNode(builder.toString());
MimeHeaders headers = soapMessage.getMimeHeaders();
headers.addHeader("SOAPAction", serverURI + "UpdateAllGroupWithSwitchUserConfiguration");
soapMessage.saveChanges();
/*
* Print the request message
*/
System.out.print("Request SOAP Message = ");
soapMessage.writeTo(System.out);
return soapMessage;
} catch (Exception e) {
}
return null;
}
我已经对我的尝试发表了评论
# 1 楼答案
这取决于主XML文档的结构是如何定义的。你能发布XSD吗? 例如,如果在主XSD中定义doc元素来自另一个具有给定名称空间的特定XSD,例如“myExternalDocumentNamespace”,那么您可以按照尝试的方式包含它,只需添加元素的名称空间,例如
根据您的情况,您可能更喜欢在主XSD中使用xs:any元素,不过归根结底也是一样的