Загрузка файла XML / RDF с URL-адреса с использованием Java - PullRequest
2 голосов
/ 03 марта 2012

У меня проблемы с простой загрузкой XML-файла с URL-адреса. Я уже некоторое время оглядывал этот сайт и следовал большинству примеров того, как загрузить файл с правильной кодировкой, насколько я могу судить, однако я должен делать что-то не так, потому что я не получаю желаемый результат. На данный момент мой код выглядит следующим образом.

            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-файле отображаются такие символы, как: Ksǵ p и т. Д. В Eclipse и отображается как «½¿Ks¿µïK½ï¿½ï¿½ÂŽp�» в блокноте ++. Я не знаю, что делать, потому что я уже добавил кодировку в 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.. 

Большое спасибо.

Ответы [ 2 ]

3 голосов
/ 04 марта 2012

Вы не предоставляете кодировку конструктору для строки.

Возможно, вы захотите проверить Гуава , у него есть несколько полезных утилит для чтения содержимого файлов и URL-адресов, среди прочего.

Я рекомендую вам попробовать Сезам или Джена , если вы собираетесь работать с RDF.

0 голосов
/ 07 марта 2012

Я обнаружил, что проблема на самом деле была в том, что файл был заархивирован! Вот код, который я использую сейчас, который успешно загрузил файл.

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

Надеюсь, это поможет кому-то еще, у кого могут быть подобные проблемы.

...