我发现自己一次又一次地写同样的冗长的DOM操作代码:
Element e1 = document.createElement("some-name"); e1.setAttribute("attr1", "val1"); e2.setAttribute("attr2", "val2"); document.appendChild(e1); Element e2 = document.createElement("some-other-name"); e.appendChild(e2); // Etc, the same for attributes and finding the nodes again: Element e3 = (Element) document.getElementsByTagName("some-other-name").item(0);
现在,我不想一起切换架构,即我不想使用JDOM,JAXB或其他任何东西。只是Java的org.w3c.dom。原因是
org.w3c.dom
我只是想知道是否有一个不错的包装库(例如,使用apache commons或google),可以让我用类似jRTF的流畅样式来做这样的事情:
// create a wrapper around my DOM document and manipulate it: // like in jRTF, this code would make use of static imports dom(document).add( element("some-name") .attr("attr1", "val1") .attr("attr2", "val2") .add(element("some-other-name")), element("more-elements") );
然后
Element e3 = dom(document).findOne("some-other-name");
我在这里最重要的要求是,我明确地想要在操作org.w3c.dom.Document该
org.w3c.dom.Document
因此,将转换org.w3c.dom.Document为JDOM,dom4j等似乎是个坏主意。我更喜欢用适配器包装它。
如果不存在,我可能会自己动手,因为这种jRTF语法看起来非常不错!对于XML,由于节点类型很少,因此似乎很容易实现。从流畅的API角度来看,这可能与jquery一样强大!
我发现一些工具可以大致满足我在问题中的要求:
但是,与此同时,我更倾向于自己动手。我真的非常喜欢jquery,并且我认为jquery可以映射到Java fluent API:
http://www.jooq.org/products/jOOX