Pfad schließen xml

Status
Nicht offen für weitere Antworten.

PollerJava

Top Contributor
Hallo nochmal,

Hätte noch eine Frage zum erzeugen einer XML- Datei, und zwar schaut meine Struktur so aus:
Ist das irgendwie möglich mit einer XML- Befehl, bis zu einer bestimmten Hierachy zuzumachen?

Hallo nochmal,

Hätte noch eine Frage zum erzeugen einer XML- Datei, und zwar schaut meine Struktur so aus:

Code:
<Preferences>
   <Element type="Bilder" id="0" name="Plade1">
        <varID type="" id="0">
            <State id="0">
                <iconTouch>yes</iconTouch>
                <iconTree>bild1.jpg</iconTree>
           
// hier möchte ich die XML- Datei wieder zumachen, also (</State>, </varID>,<Element>)     

    <Element type="Bilder" id="0" name="Plade2">
        <varID type="" id="0">
            <State id="0">
                <iconTouch>no</iconTouch>
                <iconTree>bild2.jpg</iconTree>
            </State>   // auch hier sollte sich der State- XML- Pfad zumachen (nur <State>
           <State id="1">
                <iconTouch>no</iconTouch>
                <iconTree>bild2.jpg</iconTree>
            </State>
// hier sollte sich wieder der ganze Pfad zumachen bis auf Preferences

Ist das irgendwie möglich mit einer XML- Befehl, bis zu einer bestimmten Hierachy zuzumachen?

Ich arbeite mit Objekten, um die XML- Datei zu erzeugen
Code:
 XMLEvent event;
            XMLEvent startRoot;
            XMLEvent endDocument = eventFactory.createEndDocument();
            
            Enumeration iterator = ((DefaultMutableTreeNode)tree.getModel().getRoot()).preorderEnumeration();
            writer.add( header );

lg
 
Ein org.w3c.dom.Document "erzeugt" selbst schließende Tags, da es ein Tree ist. D.h. es gibt viele org.w3c.dom.Nodes mit Tagnamen, welche Children und Siblings haben. Diese Blätter selbst stellen das jeweilige umschließende Tag dar.

Oder wie speicherst Du dein XML-Dokument?!

Aus Deinem Code-Fragement werde ich nicht direkt schlau.
 
Hallo nochmal,

Mein Problem ist folgendes,:
ich habe eine JTree, auf dem Nodes sind, welche ich in der XML- Datei nicht benötige, daher laufe ich den JTree durch und schaue mit die Tiefe an (hierachyNew), wenn ich jetzt in einer Hierachy bin, welche ich benötigen, dann schreibe ich wie unten gezeigt in die XML- Datei, z.B.:
startRoot = eventFactory.createStartElement( "", "", next.toString());
writer.add(startRoot);

daher schließt sich bei mir die XML- Datei nicht und deshalb würde ich eine Methode benötigen, die, wenn ich diese aufrufe, bis zu einer gewissen Tiefe schließt,

gibts sowas?

lg



Code:
Enumeration iterator = ((DefaultMutableTreeNode)tree.getModel().getRoot()).preorderEnumeration();
            writer.add( header ); 
            newXMLLine(writer, eventFactory);
            XMLEvent space = null;
            while (iterator.hasMoreElements())
                {
                Object next = iterator.nextElement();
                hierachyNew = ((DefaultMutableTreeNode)next).getLevel();
                switch (hierachyNew)                                                                               
                    {
                    case 2: startRoot = eventFactory.createStartElement( "", "", next.toString());                  
                            writer.add(startRoot);    
                            newXMLLine(writer, eventFactory);
                        break;
                    case 4:
                            space = eventFactory.createCharacters("    ");                                          
                            writer.add(space);
                            XMLEvent startElement = eventFactory.createStartElement("", "", "Element");             
                            XMLEvent elementAttribut = eventFactory.createAttribute( "type", ueberschrift ); 
                            XMLEvent elementAttributID = eventFactory.createAttribute( "id", defaultID ); 
                            XMLEvent elementAttributName = eventFactory.createAttribute( "name", next.toString());
 
Ich weiß nicht, von welchem Typ "writer" ist. EventFactory kenne ich auch nicht. Ganz zu schweigen von newXMLLine. Daher weiß ich auch nicht, was die machen oder können!

Grundsätzlich kannst Du nur Tags wieder schließen, von denen Du weißt, daß sie offen sind. Daher würde ich den JTree bzw. nur dessen Model rekursiv lesen und nicht iterativ. Dann kannst Du vor jedem Rekursionsaufruf ein Tag öffnen und nach dem Rekursionsaufruf wieder schließen. Schwupp, und schon geht das automatisch.
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben