2

考虑以下 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 并将以下内容打印到标准输出:

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。这个问题有一个简单的示例,希望能通过工作代码得到一些好的答案来区分它。)

4

1 回答 1

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());
    }
于 2012-05-22T18:17:36.070 回答