2013-07-30 3 views
1

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

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

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

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

Это WSDL пролог

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

Это первый XSD Prolog

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

Сообщите мне, если я буду более конкретным, или если мне нужно добавить дополнительную информацию.

Спасибо.

+0

Хорошо, я думаю, что это должно быть связано с тем, как файл сохраняется, потому что я только что заменил код в существующем локальном XSD кодом из загруженной версии, и он отлично работал ... – bhumphrey

+0

Проверьте эту ссылку - http://stackoverflow.com/questions/3665554/about-saxparseexception-content-is-not-allowed-in-prolog/7023984 – junkiecoder

+0

Спасибо, я на самом деле просто понял это. Я был schemaLocation в WSDL на «exampleschemas \ example1 \ schema.xsd», как только я поместил все схемы в ту же папку, что и WSDL, и изменил схему, чтобы она соответствовала. – bhumphrey

ответ

0

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

+0

Да, я сделал это. Это пролог в шестнадцатеричном формате.3C3F786D6C2076657273696F6E3D2231 2E302220656E636F64696E673D227574 662D3822207374616E64616C6F6E653D 226E6F223F3E – bhumphrey

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 и XSDs все в том же каталоге, без каких-либо подкаталогов.

Смежные вопросы