mit dom4j einen dom teilweise kopieren?

Status
Nicht offen für weitere Antworten.

SBehnen27

Aktives Mitglied
Ich habe folgende Situation:

Ein Document hat nur den Root-Knoten:
Code:
<Result/>

Ein weiteres Document hat diverse Knoten:
Code:
<File>
  <Resource id="foo">
    <Attribute id"a1">foo</Attribute>
    <Attribute id"a2">bar</Attribute>
    <Attribute id"a3">foobar</Attribute>
 </Resource>
 <Resource id="bar">
    <Attribute id"b1">foo1</Attribute>
    <Attribute id"b2">bar2</Attribute>
    <Attribute id"b3">foobar3</Attribute>
  </Resource>
</File>

Ich gehe nun das zweite Document durch und überprüfe die Knoten auf deren Inhalt. Wenn bestimmte Regeln zutreffen, soll der komplette Resource-Knoten übernommen werden - und zwar in den <Result>-Dom.

Eine Möglichkeit, ein Element an ein Root-Element anzufügen habe ich gefunden - und die wird wohl standard sein:

Code:
Element author1 = root.addElement( "author" )
      .addAttribute( "name", "James" )
      .addAttribute( "location", "UK" )
      .addText( "James Strachan" );

Das ist jetzt natürlich recht viel Arbeit und ich frage mich, ob man nicht ein komplettes Element, das schon fertig ist, an ein Element anhängen kann...
Muss ich echt jedes Attribut und jedes Element durchgehen und einzeln erstellen?
 

SBehnen27

Aktives Mitglied
und gleich noch eins hinterher:
Wie merge ich zwei Dokumente?

beide haben den gleichen Root Knoten - am Ende soll ein Dokument übrig bleiben, das einen Root-Knoten, aber alle Ergebnisse enthält...

Rätselhaft, sebo
 

BjörnBu

Aktives Mitglied
möglich, dass ich dich falsch verstehe...
Aber ich versuch mal mein Glück.

org.dom4j.Element hat die methode add(Element element). Damit sollte es gehen.

Deine zweite Frage kann ich so nicht direkt beantworten. Theoretisch kannst du wieder genauso Elemente hinzufügen wie oben. Allerdings musst du selbst wissen, wie gemergt werden soll. Wenn du einfach nur alle direkten Kinder vom Root in einem Dokument vereinigen willst, ist's ja trivial.

Wenn du eine Art ID an deinen Elementen hast und dann auf unterschiedlichen Ebenen deines DOM Baumen Elemente hinzufügen willst, wird's kompliziert. Wie genau das geht hängt wohl von deinen Anforderungen ab
 

SBehnen27

Aktives Mitglied
letzteres hab ich schon gefunden. appendContent() ists.
Ich finde die Benamung teilweise eigenartig und finde deswegen des öfteren nicht, was ich suche.
 

SBehnen27

Aktives Mitglied
ich dachte, ich hätte es...
wenn ich an ein element mit appendContent etwas anhänge, dann mache ich damit die Struktur kaputt, kann das sein?
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben