导入分析:
(1)首先,解析wsdl时生成的每个schema中的import语句的location是无效的
(2)加载一个schema时如果有引用外部的类型,那么要先加载外部类型所在的schema,否则报错,WSSynQualificationFacade.wsdl导入出错就是这种情形
解决问题的办法:
(1)让wsdl中schema的定义符合某种规律使加载时不用导入也能成功加载全部xsd文件
试着修改代码:
File f = new File("...");
FileInputStream fileInputStream_a15b = new FileInputStream(f);
types.addAll(scope.getXSDHelper().define(fileInputStream_a15b, f.toURI().toString()));
(2)正确解析import语句location: 要使用相对路径,不能用绝对路径
其他问题:
(1)WSSupplierPurInFacade.wsdl虽然能成功导入,但是Wsbean类型有两个?
(2)加载schema时的顺序是怎样安排的,前缀生成的顺序根import依赖的顺序有关吗?
以下是测试代码:
public static void main(String args[]){
try{
//FileInputStream fileInputStream_d019 = new FileInputStream(new File("C:\\Users\\bleastsun\\AppData\\Local\\Temp\\7bbe1949-841d-4db8-a4b4-6187afab5ad1\\d0194ab1-0348-4d0e-953a-d96f708d1b30.xsd"));
FileInputStream fileInputStream_4eaa = new FileInputStream(new File("C:\\Users\\bleastsun\\AppData\\Local\\Temp\\7bbe1949-841d-4db8-a4b4-6187afab5ad1\\4eaaa0bc-0a4c-40b0-9d2e-37203b154a6e.xsd"));
FileInputStream fileInputStream_a15b = new FileInputStream(new File("C:\\Users\\bleastsun\\AppData\\Local\\Temp\\7bbe1949-841d-4db8-a4b4-6187afab5ad1\\a15bf271-16c9-4278-9602-07c9ac058a69.xsd"));
List<Type> types = new ArrayList<Type>();
HelperContext scope = new SDOHelperContext();
//types.addAll(scope.getXSDHelper().define(fileInputStream_d019, null));
//types.addAll(scope.getXSDHelper().define(fileInputStream_4eaa, null));
File f = new File("C:\\Users\\bleastsun\\AppData\\Local\\Temp\\7bbe1949-841d-4db8-a4b4-6187afab5ad1");
types.addAll(scope.getXSDHelper().define(fileInputStream_a15b, f.toURI().toString()));
for(Type t : types){
System.out.println(t.getName());
}
//IOUtil.close(fileInputStream_d019);
IOUtil.close(fileInputStream_a15b);
}catch(Exception e){
e.printStackTrace();
}
}
public static void main(String args[]){
try{
//FileInputStream fileInputStream_d019 = new FileInputStream(new File("C:\\Users\\bleastsun\\AppData\\Local\\Temp\\7bbe1949-841d-4db8-a4b4-6187afab5ad1\\d0194ab1-0348-4d0e-953a-d96f708d1b30.xsd"));
//FileInputStream fileInputStream_4eaa = new FileInputStream(new File("C:\\Users\\bleastsun\\AppData\\Local\\Temp\\7bbe1949-841d-4db8-a4b4-6187afab5ad1\\4eaaa0bc-0a4c-40b0-9d2e-37203b154a6e.xsd"));
FileInputStream fileInputStream_a15b = new FileInputStream(new File("C:\\Documents and Settings\\Administrator\\Local Settings\\Temp\\678ebf70-fafb-480d-b5a6-5ca99a138f73\\0ff89869-86d1-4124-b583-b40648dfe872.xsd"));
List<Type> types = new ArrayList<Type>();
HelperContext scope = new SDOHelperContext();
//types.addAll(scope.getXSDHelper().define(fileInputStream_d019, null));
//types.addAll(scope.getXSDHelper().define(fileInputStream_4eaa, null));
File f = new File("C:\\Documents and Settings\\Administrator\\Local Settings\\Temp\\678ebf70-fafb-480d-b5a6-5ca99a138f73\\0ff89869-86d1-4124-b583-b40648dfe872.xsd");
types.addAll(scope.getXSDHelper().define(fileInputStream_a15b, f.toURI().toString()));
for(Type t : types){
System.out.println(t.getName());
}
//IOUtil.close(fileInputStream_d019);
IOUtil.close(fileInputStream_a15b);
}catch(Exception e){
e.printStackTrace();
}
}