Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Can';t使用JSoup解析XML(来自web)_Java_Jsoup - Fatal编程技术网

Java Can';t使用JSoup解析XML(来自web)

Java Can';t使用JSoup解析XML(来自web),java,jsoup,Java,Jsoup,我正在尝试处理从web发送的小型XML文件,并从中解析一些属性。我将如何在JSoup中实现这一点?我知道它不是XML解析器,而是HTML解析器,但它也支持XML,我不必构建任何处理程序、构建工厂,比如我必须在DOM、SAX等中构建的 下面是xml示例:我不能将其粘贴到这里,因为它在每一行之后都会退出代码标记-如果有人能够修复,我将不胜感激 这是我的一段代码:: String xml = "http://www.omdbapi.com/?t=Private%20Ryan&y=&pl

我正在尝试处理从web发送的小型
XML
文件,并从中解析一些属性。我将如何在
JSoup
中实现这一点?我知道它不是
XML
解析器,而是
HTML
解析器,但它也支持
XML
,我不必构建任何处理程序、构建工厂,比如我必须在
DOM
SAX
等中构建的

下面是xml示例:我不能将其粘贴到这里,因为它在每一行之后都会退出代码标记-如果有人能够修复,我将不胜感激

这是我的一段代码::

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);
它在以下方面产生NPE:

String genre = genreFromXml.text();

代码中有两个问题:

  • 您提供了一个
    URL
    String
    表示形式。当需要
    XML
    内容时,您应该使用该方法将XML解析为输入流
  • XML
    中没有元素
    genre
    genre
    是元素
    电影的属性
  • 以下是您的代码的外观:

    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
    

    代码中有两个问题:

  • 您提供了一个
    URL
    String
    表示形式。当需要
    XML
    内容时,您应该使用该方法将XML解析为输入流
  • XML
    中没有元素
    genre
    genre
    是元素
    电影的属性
  • 以下是您的代码的外观:

    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
    

    我必须处理URL中的格式错误和IO异常,对吗?我的IDE说我可以,但我想和你核实一下。是的,你需要处理这个异常,你可以简单地抛出它。你知道我怎样才能访问体裁中的第一个单词,而不用使用数组只选择“戏剧”来处理字符串?因为很多时候IMDB上的电影都有很多种类型,我只需要一种。除了像你描述的那样操纵
    字符串
    ,我不知道这是什么唯一的方法好的,用.split这样做,然后访问正确的索引。谢谢你的帮助!我必须处理URL中的格式错误和IO异常,对吗?我的IDE说我可以,但我想和你核实一下。是的,你需要处理这个异常,你可以简单地抛出它。你知道我怎样才能访问体裁中的第一个单词,而不用使用数组只选择“戏剧”来处理字符串?因为很多时候IMDB上的电影都有很多种类型,我只需要一种。除了像你描述的那样操纵
    字符串
    ,我不知道这是什么唯一的方法好的,用.split这样做,然后访问正确的索引。谢谢你的帮助!