2008-12-04 12 views
5

Obwohl ich weiß, wie man ein DOM auf die lange, mühsame Weise mit der DOM API baut, würde ich gerne etwas besser machen. Gibt es eine nette, ordentliche Möglichkeit, hierarchische Dokumente zu erstellen, zum Beispiel mit einer API, die so funktioniert wie die Kriterien-API von Hibernate? So dass ich Kette ruft wie diese zusammen, zum Beispiel:Was ist ein effizienter Weg, um ein W3C-DOM programmatisch in Java zu erstellen?

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")); 

Idealerweise dieses in XML wie dies zur Folge hätte:

<root> 
    <subnode> 
    <sub-subnode attr-name = "attr-value">some element text</sub-subnode> 
    <other_subnode /> 
</root> 

Grundsätzlich würde ich etwas mag, wo die Java selbst ‚isn t fast viermal länger als das Dokument, das ich erstelle. Existiert es?

Antwort

4

Sie möchten auf jeden Fall JDom: http://www.jdom.org/docs/apidocs/ verwenden. Es kann wie beschrieben verwendet werden, da viele Methoden einen Verweis auf this zurückgeben. Hier ist ein Code, den uns unser Lehrer für dieses XML-Dokument gezeigt hat. Habe es nicht getestet, aber der Lehrer ist groß i an ihn glauben:

<adressbuch aktualisiert="1.4.2008"> 
    <adresse> 
     <vorname> Hugo </vorname> 
     <nachname> Meier </nachname> 
     <telefon typ="mobil">0160/987654 </telefon> 
    </adresse> 
</adressbuch> 

Code:

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")))); 

Von API-Manual, es sieht aus wie die Abgüsse er nicht necassary sind. Vielleicht hat er es einfach zu Dokumentationszwecken getan.

2

Ich empfehle Elliotte Rusty Harold XOM API.

Es funktioniert mit der W3C-API, in der Sie zwischen XOM und DOM konvertieren können. Die API garantiert jederzeit eine wohlgeformte Struktur. Es ist leistungsfähig, robust und folgt konsequenten Design-Prinzipien.

0

Versuchen Sie, die Quick Start Anleitung für DOM4J zu betrachten. Es macht es auch einfach, das XML herauszubekommen. Ich habe einen entsprechenden Code-Schnipsel enthalten:

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; 
    } 
} 
Verwandte Themen