2014-01-30 45 views
2

假设我有一个包含请求/响应和wsdl文件的xml文件。我如何通过wsdl验证请求/响应?如何以编程方式(!)验证soap请求/响应与wsdl?

重要

我知道这是可能的,以实现与像Spring-WS或地铁容器,验证,但我想没有容器手动验证这样的:如果你想

public static void main (String[] arg) { 
    File xmlRequest = new File(arg[0]); 
    File wsdlFile = new File(arg[1]); 
    //.... 
    someValidator.validate(xmlRequest, wsdlFile); 
} 
+0

这将帮助你:http://stackoverflow.com/questions/42952387/how-to-set-wsdl-inner-schema- to-jaxb2marshaller-to-validate-each-post-i-wold-mak –

回答

0

要验证xml,您需要为该xml创建一个XSD。

之后,这只是一个调用验证方法,就像你一样。

package com.journaldev.xml; 

import java.io.File; 
import java.io.IOException; 

import javax.xml.XMLConstants; 
import javax.xml.transform.stream.StreamSource; 
import javax.xml.validation.Schema; 
import javax.xml.validation.SchemaFactory; 
import javax.xml.validation.Validator; 

import org.xml.sax.SAXException; 

public class XMLValidation { 

    public static void main(String[] args) { 

     System.out.println("EmployeeRequest.xml validates against Employee.xsd? "+validateXMLSchema("Employee.xsd", "EmployeeRequest.xml")); 
     System.out.println("EmployeeResponse.xml validates against Employee.xsd? "+validateXMLSchema("Employee.xsd", "EmployeeResponse.xml")); 
     System.out.println("employee.xml validates against Employee.xsd? "+validateXMLSchema("Employee.xsd", "employee.xml")); 

     } 

    public static boolean validateXMLSchema(String xsdPath, String xmlPath){ 

     try { 
      SchemaFactory factory = 
        SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI); 
      Schema schema = factory.newSchema(new File(xsdPath)); 
      Validator validator = schema.newValidator(); 
      validator.validate(new StreamSource(new File(xmlPath))); 
     } catch (IOException | SAXException e) { 
      System.out.println("Exception: "+e.getMessage()); 
      return false; 
     } 
     return true; 
    } 
} 

这里的教程:

http://www.journaldev.com/895/how-to-validate-xml-against-xsd-in-java

+0

我需要wsdl的响应请求/响应。问题已更新。 – Cherry