繁体   English   中英

是否有任何Java库以面向对象的方式包装DOM?

[英]Is there any Java library that wraps DOM in object-oriented fashion?

我试图找到一个位于DOM / XPath之上并为XML操作提供面向对象的接口的Java库。 拥有这样的东西会很好,例如:

// all X... classes are from the wrapping library
XDocument xdoc = new XDocument(new File("abc.xml"));
xdoc.find("//abc/foo").find("bar").text("one two three");

与jQuery类似,但适用于Java域。

想到的只有一个是JDOM( http://www.jdom.org )。

如果Groovy仍然符合“用于Java域”的条件,则还可以签出Groovy的XMLSlurper ,该XMLSlurper可用于解析/更新XML。

JAXB这样的东西对您有用吗?

无需使用XML的概念,而是将树解析为一组可以使用的Java对象。 如果您完全熟悉JPA,那么JAXB看起来会很自然。

甚至可以使用XJC从XSD文件自动创建Java对象。

我创建了自己的: jcabi-xml 它包装DOM和XPath,例如:

XML xml = new XMLDocument(
  "<orders><order id="4">Coffee to go</order></orders>"
);
String id = xml.xpath("//order/@id").get(0);
String name = xml.xpath("//order[@id=4]/text()");
System.out.println(xml.toString());

XMLBeans是目前最好的Java / XML对象框架:

http://xmlbeans.apache.org/

但是您要解析的XML需要一个XSD。 然后,您将执行以下操作:

abcDocument.Factory.parse(new File("abc.xml");
abcType[] abcs = abcDocument.getAbc().getAbcArray();
for (abcType abc : abcs) {
  abc.getFoo().getBar();
}

我刚才也问了同样的问题:

一个不错的Java XML DOM实用程序

我发现这些解决方案相似:

但是xmltool不如jQuery的流畅API强大,gwtquery和jsoup是使用CSS等针对HTML文档构建的,jsoup不会包装org.w3c.dom而是创建了自己的非标准DOM模型。

所以我自己滚:

http://code.google.com/p/joox/

一些例子:

// Find the order at index for and add an element "paid"
$(document).find("orders").children().eq(4).append("<paid>true</paid>");

// Find those orders that are paid and flag them as "settled"
$(document).find("orders").children()
           .find("paid").after("<settled>true</settled>");

// Add a complex element
$(document).find("orders").append(
  $("order", $("date", "2011-08-14"),
             $("amount", "155"),
             $("paid", "false"),
             $("settled", "false")).attr("id", "13");

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM