我无法从URL轻松下载XML文件。我已经浏览了这个网站已经有一段时间了,并且大部分示例都是关于如何使用正确的编码下载文件,据我所知,但是我必须做错了,因为我没有得到所需的输出。目前我的代码看起来像这样。
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文件显示如下字符: Eclipse中的 Ksǵ p 等在记事本++中显示为�KsÇμ���Ž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..
非常感谢。
答案 0 :(得分:3)
答案 1 :(得分: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();
希望这可以帮助那些可能遇到类似问题的人。