AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

[JAVA] XML

Ein Thema von Dunedain · begonnen am 3. Mär 2007 · letzter Beitrag vom 11. Mär 2007
 
Dunedain
(Gast)

n/a Beiträge
 
#14

Re: [JAVA] XML

  Alt 11. Mär 2007, 12:40
Zitat von yankee:
[...] Aber du verstehst sicherlich, dass ich keine Motovation habe dir jetzt den kompletten qt zu schrieben .
Nicht? Schade

Also, der Output über JDOM funktioniert jetzt. Folgende Funktion erzeugt den nachfolgend gezeigten XML Output.
Code:
public Element toElement ()
{
   
    /* Element für sich selbst mit dem eigenen Namen erstellen */
    Element self = new Element ( Key );
   
   
    /* Prüfen, ob das Element selbst ein Container ist */
    if( SubNodes.size () == 0 /*!Type.equalsIgnoreCase ( "container" )*/ )
    {
       
        /* Kein Container --> Datenelement
         * Die relevanten Daten extrahieren
         */
       
        /* Den Datentyp speichern */
        self.setAttribute ( "type", Type );
       
        /* Beschreibung speichern (Nur falls vorhanden) */
        if( !Description.equalsIgnoreCase ( "" ) )
            self.setAttribute ( "description", Description );
       
        /* Den Datenwert speichern */
        self.setText ( Value.toString () );
       
    }
    else
    {
       
        /* Container Element --> Enthaltene Elemente durchlaufen
         */
        for( int i = 0 ; i < SubNodes.size () ; i++ )
        {
           
            /* Kind Elemente hinzufügen */
            self.addContent ( SubNodes.get ( i ).toElement () );
           
        }
    }
   
    /* Erstelltes Element zurückgeben */
    return self;
   
}
XML-Code:
<?xml version="1.0" encoding="UTF-8"?>
<root>
  <ein>
    <anderer>
      <pfad>
        <zu>
          <einem>
            <anderen>
              <wert type="string" description="Ein ziemlich uninteressanter Testwert!">Hallo</wert>
            </anderen>
          </einem>
        </zu>
      </pfad>
    </anderer>
  </ein>
  <window>
    <position>
      <left type="short" description="Was war das doch gleich?">100</left>
    </position>
  </window>
</root>

Jetzt muss ich das natürlich wieder auslesen können.
Code:
public void loadFromFile (
        String FileName )
{
   
    try
    {
        SAXBuilder sax = new SAXBuilder ();
        Document doc = sax.build ( FileName );
       
        loadFromElement( doc.getRootElement (), root );
    }
    catch (IOException ex)
    {
        ex.printStackTrace ();
    }
    catch (JDOMException ex)
    {
        ex.printStackTrace ();
    }
}
private StorageItem loadFromElement (
        Element item,
        StorageItem data )
{
   
    Iterator itr = (item.getChildren ()).iterator ();
    Iterator otr = null;
    while(itr.hasNext ())
    {
       
        Element current = (Element)itr.next ();
        otr = (current.getChildren ()).iterator ();
       
        /* Container? */
        if( otr.hasNext () )
        {
            data.SubNodes.add ( loadFromElement ( (Element)otr.next (), data ) );
        }
        /* Daten */
        else
        {
            try
            {
                data.SubNodes.add ( new StorageItem ( current.getName (),
                        current.getAttribute ( "type" ).getValue (),
                        current.getText (),
                        current.getAttribute ( "description" ).getValue () ) );
            }
            catch (InvalidStorageData ex)
            {
                ex.printStackTrace ();
            }
            catch (InvalidXmlAttributeContentException ex)
            {
                ex.printStackTrace ();
            }
            catch (InvalidXmlElementNameException ex)
            {
                ex.printStackTrace ();
            }
        }
       
    }
   
    return data;
   
}
Erstellt wird dabei aber leider nur so was:
Code:
"name":"root"
"list":
[
  {
    "name":"wert"
    "type":"string"
    "description":"..."
    "wert":"hallo"
    [
      {
        null
      }
    ]
    "name":"root"
    "list":
    [
      {
        // Enthält alle Elemente des root Elementes [erstes Element in der Liste]
      }
    ]
    "name":"root"
    "list":
    [
      {
        // Enthält alle Elemente des root Elementes [erstes Element in der Liste]
      }
    ]
    "name":"root"
    "list":
    [
      {
        // Enthält alle Elemente des root Elementes [erstes Element in der Liste]
      }
    ]
    "name":"left"
    "type":"short"
    "description":"..."
    "wert":"hallo"
    [
      {
        null
      }
    ]
    "name":"root"
    "list":
    [
      {
        // Enthält alle Elemente des root Elementes [erstes Element in der Liste]
      }
    ]
  }
]
Hab irgendwie gerade en Brett vorm Kopf, denn ich seh den Fehler nicht ...
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:22 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz