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
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von yankee
yankee

Registriert seit: 10. Mär 2004
1.134 Beiträge
 
Lazarus
 
#11

Re: [JAVA] XML

  Alt 10. Mär 2007, 15:39
Zitat von Dunedain:
Ich wollte (muss?) das ganze über nen DOM|JDOM regeln, da ich die Daten ja auch wieder einlesen können muss. Und genau da liegt mein Problem.
Zitat von yankee:
Zum auslesen kannst du dann SAX (http://www.saxproject.org/) nehmen. Das dürfte die performanteste Lösung sein...
Mit der DOM|JDOM (hab' damit noch nie was gemacht) müsste die von dir generierte xml-Datei aber auch wieder einlesen können.
Letzter Tipp: Drogen. Machen zwar nicht glücklich, geben einem aber wenigstens das Gefühl glücklich zu sein.

Have a lot of fun!
  Mit Zitat antworten Zitat
Dunedain
(Gast)

n/a Beiträge
 
#12

Re: [JAVA] XML

  Alt 10. Mär 2007, 16:10
Zitat von yankee:
Mit der DOM|JDOM (hab' damit noch nie was gemacht) müsste die von dir generierte xml-Datei aber auch wieder einlesen können.
Klar, das sollte schon irgendwie gehen... Hab aber auch noch nie mit DOM oder JDOM gearbeitet. Hab mir bloß gedacht, bevor ich das XML Dokument als String betrachte und mir versuche, nen eigenen Parser zu schreiben, nehm ich lieber was vorhandenes...

Aber genau das ist das Problem Ich habe es weder hinbekommen, mit JDOM das angesprochene XML Dokument zu erstellen noch es wieder auszulesen. Ok, das Auslesen funzt schonmal teilweise...

Ich komme zwar mit JDOM (SaxBuilder) an die Werte, aber nicht über die einzelnen Kind Knoten, sondern nur über den Root Node, durch den ich auch auf untergeordnete Knoten welche keine direkten "Kinder" des Root Node sind, zugreifen kann (Also eine Liste, wo jedes XML Element OHNE "Verschachtelung" aufgeführt wird). Das macht es schwieriger, wenn nicht gar unmöglich, die gelesenen Daten wieder in die Liste zu packen...
  Mit Zitat antworten Zitat
Benutzerbild von yankee
yankee

Registriert seit: 10. Mär 2004
1.134 Beiträge
 
Lazarus
 
#13

Re: [JAVA] XML

  Alt 10. Mär 2007, 16:17
php enthält eine Portierung des sax-parsers, mit dem ich schon gearbeited habe...

Und zumindest da ist das ganz einfach... Und unter http://www.saxproject.org/quickstart.html ist auch eine kleine Anleitung.
Wo ist dein Problem damit? Wenn du mir sagst, wo du nicht weiterkommst, kann ich dir vielleicht helfen. Aber du verstehst sicherlich, dass ich keine Motovation habe dir jetzt den kompletten qt zu schrieben .
Letzter Tipp: Drogen. Machen zwar nicht glücklich, geben einem aber wenigstens das Gefühl glücklich zu sein.

Have a lot of fun!
  Mit Zitat antworten Zitat
Dunedain
(Gast)

n/a Beiträge
 
#14

Re: [JAVA] XML

  Alt 11. Mär 2007, 13: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
Benutzerbild von yankee
yankee

Registriert seit: 10. Mär 2004
1.134 Beiträge
 
Lazarus
 
#15

Re: [JAVA] XML

  Alt 11. Mär 2007, 15:58
Code:
private StorageItem loadFromElement ( 
        Element item,
        StorageItem data )
Du übergibst data UND
Code:
return data;
returnst es?
Wenn du dir deinen Quelltext nochmal genau ansiehst könnte das die Fehlerquelle sein. Zumindest ist es eine.
Ich würde mal sagen du hörst einfach auf data zu übergeben und deklarierst es als eine lokale Variable der Funktion, die du, wie bisher auch returnst.
Letzter Tipp: Drogen. Machen zwar nicht glücklich, geben einem aber wenigstens das Gefühl glücklich zu sein.

Have a lot of fun!
  Mit Zitat antworten Zitat
Dunedain
(Gast)

n/a Beiträge
 
#16

Re: [JAVA] XML

  Alt 11. Mär 2007, 17:54
Zitat von yankee:
Wenn du dir deinen Quelltext nochmal genau ansiehst könnte das die Fehlerquelle sein. Zumindest ist es eine.
Eine? Schön, wenn es so gewesen wäre. Weiß gar nicht, was ich mir dabei gedacht habe...
Aber jetzt funktioniert alles, wie es sollte

Danke für deine tatkräftige Unterstützung
  Mit Zitat antworten Zitat
Benutzerbild von yankee
yankee

Registriert seit: 10. Mär 2004
1.134 Beiträge
 
Lazarus
 
#17

Re: [JAVA] XML

  Alt 11. Mär 2007, 17:56
Zitat von Dunedain:
Danke für deine tatkräftige Unterstützung
Gerne doch .
Sry das OT...
Aber kann du mir ghanz kurz sagen, wo dein Nick herkomtm? Der kommt mir so verdammt bekannt vor...
Letzter Tipp: Drogen. Machen zwar nicht glücklich, geben einem aber wenigstens das Gefühl glücklich zu sein.

Have a lot of fun!
  Mit Zitat antworten Zitat
Dunedain
(Gast)

n/a Beiträge
 
#18

Re: [JAVA] XML

  Alt 11. Mär 2007, 19:44
[offtopic]
Wird eigentlich Dúnedain geschrieben und kommt aus dem "Herr der Ringe".
Aragorn tritt anfangs unter diesem Namen auf, obwohl der Name eigentlich eine Bevölkerungsgruppe bzw. ein Königreich bezeichnet.
[/offtopic]
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 05:43 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz