考虑以下XML:
<?xml version="1.0" encoding="ISO-8859-1"?>
<CATALOG>
<CD>
<TITLE>Empire Burlesque</TITLE>
<ARTIST>Bob Dylan</ARTIST>
<COUNTRY>USA</COUNTRY>
<COMPANY>Columbia</COMPANY>
<PRICE>10.90</PRICE>
<YEAR>1985</YEAR>
</CD>
<CD>
<TITLE>Hide your heart</TITLE>
<ARTIST>Bonnie Tyler</ARTIST>
<COUNTRY>UK</COUNTRY>
<COMPANY>CBS Records</COMPANY>
<PRICE>9.90</PRICE>
<YEAR>1988</YEAR>
</CD>
</CATALOG>
我想解析这个XML并将以下内容打印到stdout:
Bob Dylan recorded Empire Burlesque in 1985.
Bonnie Tyler recorded Hide your heart in 1988.
用Java做最简单的方法是什么?
我很沮丧,因为我可以在一些语言中用5或6行解析这个XML,但在Java中我唯一知道的方法就是编写自己的SAX解析器,这意味着我需要大约50行代码;我可能在其他地方使用的10倍! Java是否有一个超级简单的XML解析器适合这样的简单任务?
(我知道有类似的问题,但它们要么不包含示例,要么示例涉及长,部分和/或深度嵌套的XML。这个问题有一个简单的例子,希望能得到一些好的答案使用工作代码来区分它。)
答案 0 :(得分:2)
尝试XOM。
import nu.xom.*;
List<Element> cds = new Builder().build(inputFile).getRootElement().query("CD");
for (Element e : cds) {
System.out.println(e.getFirstChildElement("ARTIST").getValue()
+ " recorded "
+ e.getFirstChildElement("TITLE").getValue()
+ " in "
+ e.getFirstChildElement("YEAR").getValue());
}