无法使用JSoup解析XML(来自Web)

时间:2017-01-18 08:22:40

标签: java jsoup

我正在尝试处理从web发送的小XML个文件,并从中解析一些属性。我将如何在JSoup中解决这个问题?我知道它不是XML解析器而是HTML一个但它也支持XML而且我不需要构建任何处理程序,BuildFactories以及我必须在{{1} },DOM等。

以下是示例xml:LINK我无法将其粘贴到此处,因为它会在每行之后退出代码标记 - 如果有人可以解决此问题,我将不胜感激。

这是我的代码::

SAX

导致NPE:

String xml = "http://www.omdbapi.com/?t=Private%20Ryan&y=&plot=short&r=xml";
Document doc = Jsoup.parse(xml, "", Parser.xmlParser());
// want to select first occurrence of genre tag though there is only one it 
// doesn't work without .first() - but it doesn't parse it
Element genreFromXml = doc.select("genre").first();
String genre = genreFromXml.text();
System.out.println(genre);

1 个答案:

答案 0 :(得分:3)

您的代码中有2个问题:

  1. 您提供String URL的{​​{1}}表示,而XML内容是预期的,您应该使用方法parse(InputStream in, String charsetName, String baseUri, Parser parser)来解析XML作为输入流。
  2. genre中没有元素XMLgenre是元素movie的属性。
  3. 以下是您的代码的外观:

    String url = "http://www.omdbapi.com/?t=Private%20Ryan&y=&plot=short&r=xml";
    // Parse the doc using an XML parser
    Document doc = Jsoup.parse(new URL(url).openStream(), "UTF-8", "", Parser.xmlParser());
    // Select the first element "movie"
    Element movieFromXml = doc.select("movie").first();
    // Get its attribute "genre"
    String genre = movieFromXml.attr("genre");
    // Print the result
    System.out.println(genre);
    

    <强>输出:

    Drama, War