[英]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。
我创建了自己的: 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对象框架:
但是您要解析的XML需要一个XSD。 然后,您将执行以下操作:
abcDocument.Factory.parse(new File("abc.xml"); abcType[] abcs = abcDocument.getAbc().getAbcArray(); for (abcType abc : abcs) { abc.getFoo().getBar(); }
我刚才也问了同样的问题:
我发现这些解决方案相似:
但是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.