Сохранение загруженных XSD и WSDL

это мой первый раз, когда ищу помощь здесь, и я надеюсь, что кто-то может мне помочь.

Мне дали задание локализовать наш процесс сборки ant, чтобы сократить время сборки.

Идея похожа на создание задачи ant, которая загружает WSDL, связанные с определенной службой, и сохраняет их локально. Короче говоря, это было сделано, но по какой-то причине при создании службы с использованием локальных файлов я получаю сообщение об ошибке «Контент не разрешен в прологе» в первом импортированном XSD.

Я искал форумы, и наиболее распространенный ответ - скрытые символы перед прологом, но я проверил шестнадцатеричный код и скрытых символов нет.

Это пролог WSDL

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

Это первый пролог XSD

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

Пролог в шестнадцатеричном формате

   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));

Дайте мне знать, если я должен быть более конкретным или мне нужно добавить больше информации.

Спасибо.


person bhumphrey    schedule 30.07.2013    source источник
comment
Хорошо, я думаю, это должно быть как-то связано со способом сохранения файла, потому что я просто заменил код в существующем локальном XSD кодом из загруженной версии, и он работал нормально...   -  person bhumphrey    schedule 30.07.2013
comment
Проверьте эту ссылку - stackoverflow.com/questions/3665554/   -  person junkiecoder    schedule 31.07.2013
comment
Спасибо, я на самом деле только что понял это. Я изменил schemaLocation в WSDL на exampleschemas\example1\schema.xsd, как только поместил все схемы в ту же папку, что и WSDL, и изменил schemaLocation, чтобы он работал нормально.   -  person bhumphrey    schedule 01.08.2013


Ответы (2)


Проблема была в 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 находятся в одном каталоге без подкаталогов.

person bhumphrey    schedule 01.08.2013

Откройте XSD/WSDL в блокноте ++, щелкните меню «Кодировка», выберите UTF-8 и проверьте, нет ли ненужных символов. Убедитесь, что в первой строке вашего XSD/WSDL нет места.

person junkiecoder    schedule 30.07.2013
comment
Да, я сделал это. Это пролог в шестнадцатеричном формате. - person bhumphrey; 30.07.2013