什么是最简单和简约的java xml api?

时间:2011-05-03 09:06:33

标签: java xml xml-serialization

有许多相当不错的json libs lika GSon。但对于XML,我只知道Xerces / JDOM,而且两者都有繁琐的API。 我不喜欢使用不必要的对象,如DocumentFactory,XpathExpressionFactory,NodeList等。 因此,根据groovy / scala等语言的原生xml支持,我有一个问题。 是否存在简约的Java XML IO框架?

PS XStream / JAxB适用于序列化/反序列化,但在这种情况下,我正在寻找使用XPath以XML格式传输某些数据。

7 个答案:

答案 0 :(得分:3)

W3C DOM模型令人不快和笨重,我同意。 JDOM已经很简单了。我所知道的唯一一个更简单的其他DOM API是XOM

答案 1 :(得分:2)

StAX怎么样?使用Java 6,您甚至不需要额外的库。

答案 2 :(得分:1)

Dom4J岩石。这很容易理解

示例代码:

public static void main(String[] args) throws Exception {
    final String xml = "<root><foo><bar><baz name=\"phleem\" />"
                     + "<baz name=\"gumbo\" /></bar></foo></root>";

    Document document = DocumentHelper.parseText(xml);

    // simple collection views
    for (Element element : (List<Element>) document
            .getRootElement()
            .element("foo")
            .element("bar")
            .elements("baz")) {
        System.out.println(element.attributeValue("name"));
    }

    // and easy xpath support
    List<Element> elements2 = (List<Element>)
        document.createXPath("//baz").evaluate(document);
    for (final Element element : elements2) {
        System.out.println(element.attributeValue("name"));
    }
}

<强>输出:

  

phleem
  秋葵
  phleem
  秋葵

答案 3 :(得分:1)

尝试VTD-XML。它比具有出色内存占用的DOM解析器快3到4倍。

答案 4 :(得分:0)

取决于你的java对象有多复杂:它们是自包含的(如图形节点)。如果您的对象很简单,您可以使用Google gson - 它是最简单的API(IMO)。 在Xstream中,当你需要调试时,事情开始变得混乱。当你为XStream选择一个不受欢迎的驱动程序时,你需要小心。

答案 5 :(得分:0)

JDOM和XOM可能是最简单的。 DOM4J更强大但更复杂。 DOM太可怕了。使用Java处理XML总是比处理JSON更复杂,因为JSON是为结构化数据设计的,而XML是为文档设计的,而文档比结构化数据更复杂。为什么不使用专为XML设计的语言,特别是XSLT或XQuery?

答案 6 :(得分:0)

NanoXML非常小,低于50kb。我今天发现了这个,我真的很感动。