2008-12-04 3 views
5

Хотя я знаю, как построить DOM долгий, трудный путь с использованием DOM API, я хотел бы сделать что-то немного лучше, чем это. Есть ли хороший, аккуратный способ построения иерархических документов, например, с API, который работает как API-интерфейс Hibernate? Так что я могу цепь вызовов вместе, как это, например:Что такое эффективный способ создания W3C DOM программно в Java?

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 ISN» t почти в четыре раза дольше, чем документ, который я создаю. Он существует?

ответ

4

Вы определенно хотите использовать 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, это выглядит как слепков он сделал не necassary. Возможно, он просто сделал это для документации.

2

Я настоятельно рекомендую API-интерфейс Elliotte Rusty Harold's XOM.

Он взаимодействует с API W3C, в котором вы можете конвертировать между XOM и DOM. API гарантирует хорошо сформированную структуру в любое время. Он прочный, надежный и соответствует последовательным принципам проектирования.

0

Попробуйте найти руководство для 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; 
    } 
} 
Смежные вопросы