用几行Java解析XML?

时间:2012-05-22 18:07:50

标签: java xml-parsing

考虑以下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。这个问题有一个简单的例子,希望能得到一些好的答案使用工作代码来区分它。)

1 个答案:

答案 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());
    }
相关问题