尽管我知道如何使用DOM漫长而艰巨地构建一个DOM,但我想做一些比这更好的事情。有没有一种很好的、整洁的方法来构建分层文档,比如说,使用类似Hibernate的标准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"));理想情况下,这将导致XML如下所示:
<root>
<subnode>
<sub-subnode attr-name = "attr-value">some element text</sub-subnode>
<other_subnode />
</root>基本上,我希望Java本身的长度不超过我生成的文档的四倍。它存在吗?
发布于 2008-12-04 17:48:58
您肯定想要使用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>代码:
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"))));从API手册中看,他所做的角色转换并不是必须的。也许他这么做只是出于文档目的。
发布于 2008-12-04 17:43:42
我强烈推荐埃利奥特·拉斯蒂·哈罗德的XOM应用编程接口。
它可以与XOM互操作,因为您可以在W3C和DOM之间进行转换。API保证任何时候都有一个结构良好的结构。它是高性能的,健壮的,遵循一致的设计原则。
发布于 2008-12-04 18:11:05
请尝试查看DOM4J的Quick Start指南。这也使得XML的输出变得非常容易。我已经包含了一个相关的代码片段:
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
public class Foo {
public Document createDocument() {
Document document = DocumentHelper.createDocument();
Element root = document.addElement( "root" );
Element author1 = root.addElement( "author" )
.addAttribute( "name", "James" )
.addAttribute( "location", "UK" )
.addText( "James Strachan" );
Element author2 = root.addElement( "author" )
.addAttribute( "name", "Bob" )
.addAttribute( "location", "US" )
.addText( "Bob McWhirter" );
return document;
}
}https://stackoverflow.com/questions/341474
复制相似问题