[英]How programmatically (!) validate soap request/response with 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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.