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 を解析し、次を stdout に出力したいと思います。

Bob Dylan recorded Empire Burlesque in 1985.
Bonnie Tyler recorded Hide your heart in 1988.

Javaでこれを行う最も簡単な方法は何ですか?

一部の言語ではこの XML を 5 行または 6 行で解析できるのでイライラしますが、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 に答える