Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将soapxml转换为java_Java_Soap_Xml Parsing - Fatal编程技术网

将soapxml转换为java

将soapxml转换为java,java,soap,xml-parsing,Java,Soap,Xml Parsing,我有来自soap服务的日志文件,其中显示xml请求/响应。如何将其转换为java对象而无需任何封送/映射和手动解析?只创建绑定类,将其放入wsld并调用read()方法 我的系统使用cfx和Aegis绑定。这是我的代码,但它不能pars对象,因为我不知道如何映射对象。正是关于如何将wsdl绑定到我的目标的问题 AegisDatabindingFactoryBean factoryBean = new AegisDatabindingFactoryBean(); factoryBean.set

我有来自soap服务的日志文件,其中显示xml请求/响应。如何将其转换为java对象而无需任何封送/映射和手动解析?只创建绑定类,将其放入wsld并调用read()方法

我的系统使用cfx和Aegis绑定。这是我的代码,但它不能pars对象,因为我不知道如何映射对象。正是关于如何将wsdl绑定到我的目标的问题

 AegisDatabindingFactoryBean factoryBean = new AegisDatabindingFactoryBean();
 factoryBean.setWriteXsiTypes(true);
 factoryBean.setOverrideTypes(overridedClassList);
 factoryBean.setSupportVariations(true);
 AegisDatabinding dataBinding = factoryBean.createAegisDatabinding();
 DataReader<XMLStreamReader> dataReader = dataBinding.createReader(XMLStreamReader.class);
 String tempData = "<soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\"><soap:Body>...";
 XMLInputFactory factory = XMLInputFactory.newInstance();
 XMLStreamReader streamReader = factory.createXMLStreamReader(new StringReader(tempData));
 Object result  = dataReader.read(streamReader);
AegisDatabindingFactoryBean factoryBean=新的AegisDatabindingFactoryBean();
setWriteXsiTypes(true);
setOverrideTypes(overridedClassList);
factoryBean.setSupportVariations(true);
AegisDatabinding-dataBinding=factoryBean.createAegisDatabinding();
DataReader DataReader=dataBinding.createReader(XMLStreamReader.class);
字符串tempData=“…”;
XMLInputFactory=XMLInputFactory.newInstance();
XMLStreamReader streamReader=factory.createXMLStreamReader(新的StringReader(tempData));
对象结果=dataReader.read(streamReader);

我找到了解决方案:要使用Aegis将soap xml转换为java对象,您需要创建AegisDatabind(它可以是重写的标准),而不是使用ClientFactoryBean创建cxf客户端,现在您的绑定是使用wsdl的init。但对于所有这些工作,您应该让服务器使用wsdl或将wsdl放入文件系统:

AegisDatabinding dataBinding = ... {your dataBinding};

    ClientFactoryBean clientProxyFactoryBean = new ClientFactoryBean();
    clientProxyFactoryBean.setDataBinding(dataBinding);
    // Path to wsdl
    clientProxyFactoryBean.setAddress("http://servername/app?wsdl");
    // implemented service
    clientProxyFactoryBean.setServiceClass(com.exigen.aaa.rating.home.ca.RatingService.class);
    Client client = clientProxyFactoryBean.create();

    DataReader<XMLStreamReader> dataReader = dataBinding.createReader(XMLStreamReader.class);
    String tempData = "<soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\"><soap:Body>...";
    XMLInputFactory factory = XMLInputFactory.newInstance();
    XMLStreamReader streamReader = factory.createXMLStreamReader(new StringReader(tempData));

    // miss all soap messages
    while (true) {
        if (streamReader.isStartElement()) {
            System.out.println(streamReader.getName());
            if ("{http://your.object.value/}arg1".equals(streamReader.getName().toString())) {
                break;
            }
        }
        streamReader.next();
    }
    Object result  = dataReader.read(streamReader);
AegisDatabinding数据绑定=。。。{您的数据绑定}; ClientFactoryBean clientProxyFactoryBean=新ClientFactoryBean(); setDataBinding(数据绑定); //wsdl的路径 clientProxyFactoryBean.setAddress(“http://servername/app?wsdl"); //实现服务 clientProxyFactoryBean.setServiceClass(com.exigen.aaa.rating.home.ca.RatingService.class); Client=clientProxyFactoryBean.create(); DataReader DataReader=dataBinding.createReader(XMLStreamReader.class); 字符串tempData=“…”; XMLInputFactory=XMLInputFactory.newInstance(); XMLStreamReader streamReader=factory.createXMLStreamReader(新的StringReader(tempData)); //错过所有soap消息 while(true){ if(streamReader.isStartElement()){ System.out.println(streamReader.getName()); 如果(”{http://your.object.value/}arg1“.equals(streamReader.getName().toString()){ 打破 } } streamReader.next(); } 对象结果=dataReader.read(streamReader);