![]() |
Re: [JAVA] XML
Zitat:
Zitat:
|
Re: [JAVA] XML
Zitat:
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... |
Re: [JAVA] XML
php enthält eine Portierung des sax-parsers, mit dem ich schon gearbeited habe...
Und zumindest da ist das ganz einfach... Und unter ![]() 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 ;-). |
Re: [JAVA] XML
Zitat:
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:
Erstellt wird dabei aber leider nur so was:
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; }
Code:
Hab irgendwie gerade en Brett vorm Kopf, denn ich seh den Fehler nicht :oops: ...
"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] } ] } ] |
Re: [JAVA] XML
Code:
Du übergibst data UND
private StorageItem loadFromElement (
Element item, StorageItem data )
Code:
returnst es?
return data;
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. |
Re: [JAVA] XML
Zitat:
Aber jetzt funktioniert alles, wie es sollte :-D Danke für deine tatkräftige Unterstützung :thumb: |
Re: [JAVA] XML
Zitat:
Sry das OT... Aber kann du mir ghanz kurz sagen, wo dein Nick herkomtm? Der kommt mir so verdammt bekannt vor... |
Re: [JAVA] XML
[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] |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:55 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