我正在尝试处理从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);
答案 0 :(得分:3)
您的代码中有2个问题:
String
URL
的{{1}}表示,而XML
内容是预期的,您应该使用方法parse(InputStream in, String charsetName, String baseUri, Parser parser)
来解析XML作为输入流。 genre
中没有元素XML
,genre
是元素movie
的属性。以下是您的代码的外观:
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