Java Can';t使用JSoup解析XML(来自web)
我正在尝试处理从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
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这样做,然后访问正确的索引。谢谢你的帮助!