保存下载的XSD和WSDL

时间:2013-07-30 14:56:26

标签: java xsd wsdl wsimport

这是我第一次在这里寻求帮助,我希望有人可以帮助我。

我已经完成了本地化我们的ant构建过程的任务,以帮助减少构建时间。

这个想法类似于构建一个下载与特定服务关联的WSDL并在本地保存的ant任务。长话短说,这已经完成但由于某些原因,当使用本地文件构建服务时,我在第一个导入的XSD中得到“prolog中不允许内容”错误。

我搜索了论坛,最常见的回复是在prolog之前隐藏的字符,但我检查了十六进制代码并且没有隐藏的字符。

这是WSDL序言

    <?xml version="1.0" encoding="UTF-8" standalone="no"?>

这是第一个XSD序言

    <?xml version="1.0" encoding="UTF-8" standalone="no"?>

十六进制Prolog

   3C3F786D6C2076657273696F6E3D2231
   2E302220656E636F64696E673D227574
   662D3822207374616E64616C6F6E653D
   226E6F223F3E

与远程版本相同。

这也是下载的XSD和WSDL的保存方式。

private Document convertToXML(String xmlSource) throws Exception {
    DocumentBuilder builder = documentBuilderFactory.newDocumentBuilder();
    Document document = builder.parse(new InputSource(new StringReader(xmlSource)));
    return document;
}


    Transformer transformer = TransformerFactory.newInstance().newTransformer();
    transformer.setOutputProperty(OutputKeys.INDENT, "yes");
    transformer.setOutputProperty(OutputKeys.STANDALONE, "no");
    transformer.setOutputProperty(OutputKeys.ENCODING, "utf-8");
    Result output = new StreamResult(new File(filePath));

如果我应该更具体或者我是否需要添加更多信息,请告诉我。

感谢。

2 个答案:

答案 0 :(得分:1)

问题出在我正在改变的WSDL中。

原始WSDL

   <xsd:import namespace="http://someNameSpace" 
         schemaLocation="http://someLocation/dir1/dir2/schema.xsd"/>

有问题的WSDL

   <xsd:import namespace="http://someNameSpace" 
         schemaLocation="dir1/dir2/schema.xsd"/>

使用WSDL

   <xsd:import namespace="http://someNameSpace" 
         schemaLocation="schema.xsd"/>

所以现在WSDL和XSD都在同一个目录中,没有子目录。

答案 1 :(得分:0)

在记事本++中打开XSD / WSDL,单击编码菜单并选择UTF-8并检查是否有任何不必要的字符。请确保XSD / WSDL第一行中没有空格