2012-07-12 2 views
3

그래서 현재 날씨를 가져 오는 간단한 웹 서비스를 작성하려고합니다. 다음 코드를 사용하면 웹 서비스 메서드를 호출하고 반환 된 XML 데이터를 콘솔에 인쇄 할 수 있습니다.웹 서비스 응답을 구문 분석 할 때 MalformedURLException이 발생합니다.

그러나이 메서드 응답을 구문 분석하려고하면 MalformedURLException이 발생합니다. 오류에서 구문 분석하려는 XML을 볼 수 있습니다. 나는 모든 중국 문자를 얻을 파일에 웹 응답을 저장하려고하면

:

그래서 내가 파일에 대한 응답을 절약 그런 식으로 구문 분석을 시도했다. System.out.println은 파일에 있어야하기 때문에 XML을 콘솔에 완벽하게 출력합니다.

나는 아주 신입 회원이므로 매우 간단한 것을 빠뜨린 경우 실례합니다. 로컬로 파일을 저장할 필요없이이 작업을 수행하고 싶습니다.

내 문제는이 코드 어딘가에있다 :

GlobalWeather service = new GlobalWeather(); 
GlobalWeatherSoap port = service.getGlobalWeatherSoap(); 
String data = port.getWeather(city, country); 

// this prints the xml response to the console perfectly 
System.out.println(data); 

SAXParserFactory spf = SAXParserFactory.newInstance(); 
spf.setNamespaceAware(true); 
SAXParser saxParser = spf.newSAXParser(); 
XMLReader xmlReader = saxParser.getXMLReader(); 
xmlReader.setContentHandler(new WeatherApp()); 

// this gives MalformedURLexception when set up this way. 
// this gives the correct output when passed a locally stored XML file 
// I have omitted my SAX methods and my weather class that holds the data 
// but all work fine when using a local XML file on my machine. 
xmlReader.parse(data); 

답변

6

당신은 실수로 SAXReader.parse의 잘못된 오버로드를 호출

InputSource source = new InputSource(new StringReader(data)); 
xmlReader.parse(source); 

xmlReader.parse(data); 

를 교체합니다. String을 취하는 버전에서는 내용 자체가 아닌 구문 분석 할 내용을 검색 할 수있는 URI가 필요합니다.

+0

신속하고 정확한 답변을 보내 주셔서 감사합니다. 내 문제가 바로 해결 됐어! –

+0

반갑습니다. 나중에 참조 할 수 있도록 "accept"라는 대답 만 표시하면됩니다. 그것은 "고마워, 효과가있다"는 의미입니다. 아이디어는 질문과 답변이 스스로 이야기하고 미래의 방문자는 토론이 아니라 질문과 대답을 원할 것입니다. –

관련 문제