有许多相当不错的json libs lika GSon。但对于XML,我只知道Xerces / JDOM,而且两者都有繁琐的API。 我不喜欢使用不必要的对象,如DocumentFactory,XpathExpressionFactory,NodeList等。 因此,根据groovy / scala等语言的原生xml支持,我有一个问题。 是否存在简约的Java XML IO框架?
PS XStream / JAxB适用于序列化/反序列化,但在这种情况下,我正在寻找使用XPath以XML格式传输某些数据。
答案 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。我今天发现了这个,我真的很感动。