虽然我知道如何使用DOM API构建一个长期,艰巨的DOM,但我想做一些比这更好的事情.是否有一种漂亮,整洁的方式来构建分层文档,例如,一个像Hibernate的Criteria API一样工作的API?这样我可以像这样链接一起调用,例如:
Document doc = createDocumentSomehow ();
doc.createElement ("root").createElements (
doc.newElement ("subnode")
.createElement ("sub-subnode")
.setText("some element text")
.addAttribute ("attr-name","attr-value"),
doc.newElement ("other_subnode"));
Run Code Online (Sandbox Code Playgroud)
理想情况下,这会产生如下XML:
<root>
<subnode>
<sub-subnode attr-name = "attr-value">some element text</sub-subnode>
<other_subnode />
</root>
Run Code Online (Sandbox Code Playgroud)
基本上,我想要的东西,Java本身不会比我生成的文档长四倍.它存在吗?
您肯定想使用JDom:http://www.jdom.org/docs/apidocs/。它可以像您所描述的那样使用,因为许多方法返回对 的引用this。下面是我们的老师向我们展示的这个 XML 文档的一些代码。没有测试过,但是老师很棒我相信他:
<adressbuch aktualisiert="1.4.2008">
<adresse>
<vorname> Hugo </vorname>
<nachname> Meier </nachname>
<telefon typ="mobil">0160/987654 </telefon>
</adresse>
</adressbuch>
Run Code Online (Sandbox Code Playgroud)
代码:
new Document(
new Element ("adressbuch")
.setAttribute("aktualisiert", "1.4.2008")
.addContent(
(Element) new Element("adresse")
.addContent(
(Element) new Element("vorname")
.addContent("Hugo"))
.addContent(
(Element) new Element("nachname")
.addContent("Meier"))
.addContent(
(Element) new Element("telefon")
.setAttribute("typ", "mobil")
.addContent("0160/987654"))));
Run Code Online (Sandbox Code Playgroud)
从 API 手册来看,他所做的转换似乎是不必要的。也许他只是为了记录目的而这样做。