2013-07-30 3 views
1

이 처음 도움을 찾고 있습니다. 누군가가 나를 도울 수 있기를 바랍니다.다운로드 한 XSD와 WSDL을 저장하면

빌드 시간을 줄이기 위해 개미 빌드 프로세스를 현지화하는 작업이있었습니다.

이 아이디어는 특정 서비스와 관련된 WSDL을 다운로드하고 로컬로 저장하는 ant 태스크를 작성하는 것과 같습니다. 간단히 말해서,이 작업이 완료되었지만 로컬 파일을 사용하여 서비스를 빌드 할 때 첫 번째로 가져온 XSD에서 '내용이 프롤로그에 허용되지 않습니다'오류가 발생합니다.

포럼을 검색했으며 가장 일반적인 응답은 프롤로그 전에 숨겨진 문자이지만 16 진수 코드를 확인하고 숨겨진 문자는 없습니다.

이 원격 버전과 동일 헥스

3C3F786D6C2076657273696F6E3D2231 
    2E302220656E636F64696E673D227574 
    662D3822207374616E64616C6F6E653D 
    226E6F223F3E 

의 제 XSD 프롤로그

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

프롤로그에게 인 WSDL 프롤로그

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

이다.

다운로드 한 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

감사합니다. 실제로 실제로 알아 냈습니다. WSDL에서 모든 스키마를 WSDL과 동일한 폴더에 넣고 schemaLocation을 변경하여 수정하면 곧 "exampleschemas \ example1 \ schema.xsd"라는 WSDL의 schemaLocation이었습니다. – bhumphrey

답변

0

메모장 + +에서 XSD/WSDL을 열고 인코딩 메뉴를 클릭 한 다음 UTF-8로 선택하고 불필요한 문자가 있는지 확인하십시오. XSD/WSDL의 첫 번째 줄에 공백이 없도록하십시오.

+0

예. 이것은 16 진수의 프롤로그입니다.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 및 XSD를이 전혀 하위 디렉토리와 같은 디렉토리에 있습니다.

관련 문제