java - 如何以编程方式(!)使用 wsdl 验证 soap 请求/响应?

标签 java web-services validation soap wsdl

假设我有一个包含请求/响应和 wsdl 文件的 xml 文件。如何通过 wsdl 验证请求/响应

重要

我知道可以使用 Spring-Ws 或 Metro 之类的容器启用此类验证,但我希望在没有此类容器的情况下进行手动验证:

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

最佳答案

如果要验证 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

关于java - 如何以编程方式(!)使用 wsdl 验证 soap 请求/响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21461504/

相关文章:

web-services - 如何在 Spring 中配置 jax-ws 处理程序?

C#/IRS ACA - 使用 WCF 4.5 发送带有 MTOM 附件和 GZip 编码的 Web 服务请求

javascript - 使用 jQuery 检查表单是否有输入元素

python - Python 中的表单生成/验证库

java - 如何使用 HttpUnit servlet runner 运行 servlet 测试? ServletUnit 启动时遇到问题?

Java - 另存为 RTF 不支持文本对齐?

java - java中的指数

java - Lombok 注释在带有 maven 的 netbeans 中不起作用

java - 无法从 Groovy 调用 Web 服务

jquery - Symfony2 AJAX 验证