如何使用Java从URL读取/获取XML文件?

时间:2011-01-11 19:21:50

标签: java xml xml-parsing

我想从URL读取XML文件,我想解析它。我怎么能用Java做到这一点?

5 个答案:

答案 0 :(得分:3)

从URL读取与任何其他输入源不同。有几种不同的Java工具可用于XML解析。

答案 1 :(得分:2)

您可以使用Xstream支持此功能。

URL url = new URL("yoururl");
BufferedReader in = new BufferedReader(
                new InputStreamReader(
                url.openStream()));



xSteamObj.fromXML(in);//return parsed object

答案 2 :(得分:1)

两个步骤:

  1. 从服务器获取字节。
  2. 为它创建合适的XML源,甚至可能是Transformer。
  3. 连接两者并获得例如用于进一步处理的DOM。

答案 3 :(得分:1)

我使用JDOM:

import org.jdom.Document;
import org.jdom.Element;
import org.jdom.input.*;

StringBuilder responseBuilder = new StringBuilder();
try {
 // Create a URLConnection object for a URL
 URL url = new URL( "http://127.0.0.1" );
 URLConnection conn = url.openConnection();
 HttpURLConnection httpConn;

 httpConn = (HttpURLConnection)conn;
 BufferedReader rd = new BufferedReader(new InputStreamReader(httpConn.getInputStream()));
 String line;

 while ((line = rd.readLine()) != null)
 {
  responseBuilder.append(line + '\n');
 }
}
catch(Exception e){
 System.out.println(e);
}

SAXBuilder sb = new SAXBuilder();
Document d = null;
try{
    d = sb.build( new StringReader( responseBuilder.toString() ) );
}catch(Exception e){
    System.out.println(e);
}

当然,您可以将整个读取URL剪切为字符串,然后将字符串读取器放在字符串上,但是我已经从两个不同的区域剪切/粘贴。所以这更容易。

答案 4 :(得分:0)

这是使用Streaming解析器的好选择:StAX StAX旨在以串行方式处理XML流;与一次性需要整个文档模型的DOM API相比。 StAX还假设内容是动态的,并且XML的本质并不是真正知道的。 StAX用例也包括处理管道。