有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

在将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>

当我发送文件时,它会转换成这个

**&gt;&lt;Folder&gt;&lt;**

一定是这样

<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) 个答案

  1. # 1 楼答案

    这取决于主XML文档的结构是如何定义的。你能发布XSD吗? 例如,如果在主XSD中定义doc元素来自另一个具有给定名称空间的特定XSD,例如“myExternalDocumentNamespace”,那么您可以按照尝试的方式包含它,只需添加元素的名称空间,例如

    <Folder xmlns="myExternalDocumentNamespace">
    ...
    </Folder>
    

    根据您的情况,您可能更喜欢在主XSD中使用xs:any元素,不过归根结底也是一样的