java - 只需几行 Java 即可解析 XML?

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

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

在 Java 中执行此操作最简单的方法是什么?

我很沮丧,因为在某些语言中我可以用 5 或 6 行解析此 XML,但在 Java 中我知道的唯一方法是编写自己的 SAX 解析器,这意味着我需要大约 50 行代码;是我在其他地方可能使用的 10 倍! Java 是否有一个 super 简单的 XML 解析器适合这样的简单任务?

(我知道有类似的问题,但它们要么不包含示例,要么示例涉及长的、部分的和/或深度嵌套的 XML。这个问题有一个简单的示例,希望能得到一些好的答案用工作代码来区分它。)

最佳答案

尝试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());
    }

关于java - 只需几行 Java 即可解析 XML?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10707585/

相关文章:

java - 在 java 7 中编译的代码在 Java 8 中无法编译。请提供解释

java - 在 Android 中使用 REST Web 服务和解析 XML 数据

android 网络服务响应 "parse xml to pojo exception"

iphone - XML特殊字符解析

java - 分割字符串无法与 (|) 运算符一起正常工作

java - 在 Java 中使用文本文件中的\t

c# - Non-Blocking IO是如何实现的?

java - 无意义的 NullPointerException/变量决定不存在

java - 如何使用 VTD-XML 解析器删除特定节点

java - 仅当某些标签可用时才解析 XML 响应