我正在尝试找到一个保留在DOM / XPath之上的Java库,并为XML操作提供面向对象的接口。很高兴有这样的东西,例如:
// 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域。
答案 0 :(得分:1)
只有一个想到的是JDOM(http://www.jdom.org)。
答案 1 :(得分:1)
如果Groovy仍然符合“for Java domain”的要求,您还可以签出Groovy's XMLSlurper,它可用于解析/更新XML。
答案 2 :(得分:1)
像JAXB之类的东西会对你有用吗?
您可以将树解析为一组可以使用的Java对象,而不是使用XML的概念。如果你对JPA很熟悉,那么JAXB看起来很自然。
甚至可以使用XJC从XSD文件自动创建Java对象。
答案 3 :(得分:0)
XMLBeans是最好的Java / XML对象框架:
但您需要为正在解析的XML使用XSD。然后你做了类似的事情:
abcDocument.Factory.parse(new File("abc.xml"); abcType[] abcs = abcDocument.getAbc().getAbcArray(); for (abcType abc : abcs) { abc.getFoo().getBar(); }
答案 4 :(得分:0)
我刚才问了同样的问题:
我发现这些解决方案类似:
但是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");
答案 5 :(得分:0)
我创建了自己的: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());