【问题标题】:What is the simplest and minimalistic java xml api?什么是最简单最简约的 java xml api?
【发布时间】:2011-05-03 09:06:32
【问题描述】:

像 GSon 一样,有很多不错的 json 库。但是对于 XML,我只知道 Xerces/JDOM 并且两者都有乏味的 API。 我不喜欢使用不必要的对象,如 DocumentFactory、XpathExpressionFactory、NodeList 等。 因此,鉴于 groovy/scala 等语言对原生 xml 的支持,我有一个问题。 有没有简约的java XML IO框架?

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

【问题讨论】:

    标签: java xml xml-serialization


    【解决方案1】:

    我同意 W3C DOM 模型令人不快且繁琐。 JDOM 已经很简单了。我知道的唯一其他更简单的 DOM API 是 XOM

    【讨论】:

    • 看起来 XOM 是最好的选择:流媒体 + 简约。
    • XOM 不稳定,它是 LGPL。
    • @aviad:它不是不稳定的,它像石头一样坚固。否则给我证据。从什么时候开始 LGPL 是一件坏事?
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      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"));
          }
      }
      

      输出:

      蜉蝣
      秋葵汤
      蜈蚣
      秋葵汤

      【讨论】:

      • 真的很简约吗?当我导入它时,我得到了 java.lang.NoClassDefFoundError: org/jaxen/JaxenException。添加 jaxen 后,添加了大约 7MB 的依赖项
      【解决方案4】:

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

      【讨论】:

        【解决方案5】:

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

        【讨论】:

          【解决方案6】:

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

          【讨论】:

            【解决方案7】:

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

            【讨论】:

              猜你喜欢
              • 2011-08-31
              • 2012-07-28
              • 2011-05-13
              • 1970-01-01
              • 1970-01-01
              • 2010-11-22
              • 2012-04-12
              • 2011-02-16
              • 2015-10-31
              相关资源
              最近更新 更多