2012-03-03 36 views
2

URLから簡単にXMLファイルをダウンロードするのに問題があります。私はこのサイトをしばらく見渡して、適切なエンコーディングでファイルをダウンロードする方法のほとんどの例を追ってきましたが、望みの出力が得られないので間違っていなければなりません。現時点では私のコードはこのように見えます。 ++ Eclipseで Ksǵpなどとメモ帳に�KsÇμ���Žp�のように表示されます。Javaを使用してURLからXML/RDFファイルをダウンロードする

  Catalog cat = (Catalog)obj; 

      String datasetURL = cat.getID()+"@datasets"; 

      URL dataURL = new URL(datasetURL); 

      InputStream iStream = dataURL.openStream(); 

      int count = iStream.available(); 
      char content[] = new char[count]; 

      InputStreamReader isReader = new InputStreamReader(iStream,"UTF-8"); 

      BufferedReader buffRead = new BufferedReader(isReader); 

      buffRead.read(content, 0, count); 

      String contentAsString = new String(content, 0,count); 

      FileWriter fstream = new FileWriter("src/main/resources/datasets.xml"); 
      BufferedWriter out = new BufferedWriter(fstream); 

      out.write(contentAsString); 
      out.close(); 

これはxmlファイルは次のように文字が表示されているが正常に動作するようです。私はInputStreamReaderに既にエンコーディングを追加しているので、何をすべきか分からないので、この問題を解決すると思った。

また、私はRDFに慣れていませんが、xmlファイルにはRDFタグがあります。違いはありますか?

<?xml version='1.0' encoding='UTF-8'?> 
<r:RDF xmlns:s="http://www.w3.org/TR/1999/PR-rdf-schema-19990303#" xmlns:r="http://www.w3.org/1999/02/22-rdf-syntax-ns#" etc.. 

ありがとうございました。

答えて

0

ファイルが圧縮されているため、問題が実際に発生していました。ここでは、ファイルを正常にダウンロードしたコードを示します。

  Catalog cat = (Catalog)obj; 

      indexName += "."+cat.getInternalID(); 

      String datasetURL = cat.getID()+"@datasets"; 

      URL dataURL = new URL(datasetURL); 

      URLConnection conn = dataURL.openConnection(); 

      String encoding = conn.getContentEncoding(); 

      InputStream is = encoding.equals("gzip")? new GZIPInputStream(conn.getInputStream()) : conn.getInputStream(); 

      BufferedReader in = new BufferedReader(new InputStreamReader(is)); 

      String inputLine; 

      while ((inputLine = in.readLine()) != null) 
       System.out.println(inputLine); 

      in.close(); 

これは、これと同様の問題を抱えている可能性のある人に役立ちます。

3

文字列のコンストラクタにcharsetを指定していません。

Guavaをチェックアウトすることができます。ファイルやURLなどの内容を読むための便利なユーティリティがあります。

RDFで作業する場合は、SesameまたはJenaをお試しください。

+0

答えていただきありがとうございます。マイケルは、いくつかの非常に良いリソースであり、私はあなたの助けに感謝しています。 – decal

関連する問題