3

だから私は現在の天気を取得する簡単なWebサービスを書こうとしています。次のコードを使用して、Webサービスメソッドを呼び出し、返されたXMLデータをコンソールに出力できます。

ただし、このメソッドの応答を解析しようとすると、MalformedURLExceptionが発生します。エラーで解析したいXMLを確認できます。

そこで、応答をファイルに保存して、そのように解析してみました。

Web応答をファイルに保存しようとすると、すべての漢字が表示されます。System.out.printlnXMLをファイルに含める必要があるように、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);
4

1 に答える 1

6

交換

xmlReader.parse(data);

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

誤ってSAXReader.parseの誤ったオーバーロードを呼び出しています。文字列を受け取るバージョンは、コンテンツ自体ではなく、解析するコンテンツを取得できるURIを想定しています。

于 2012-07-12T22:55:04.543 に答える