JTree Struktur aus XML (mit Attributen)

Status
Nicht offen für weitere Antworten.

alex-t

Aktives Mitglied
suche eine lösung um xml (von einer url z.b. http://localhost/testxml.php)
mit ähnlicher ausgabe:

############################################
Code:
<?xml version="1.0"?> 
<struktur> 

   <status>ok</status>

   <knoten> 
      <name>home</name> 
      <wert>1</wert> 
      <gesperrt>nein</gesperrt> 

            <knoten> 
              <name>einstellugen</name> 
              <wert>5</wert> 
              <gesperrt>ja</gesperrt> 
            </knoten>

            <knoten> 
               <name>person</name> 
               <wert>45</wert> 
               <gesperrt>ja</gesperrt> 

                    <knoten> 
                        <name>anschrift</name> 
                        <wert>88</wert> 
                        <gesperrt>ja</gesperrt> 
                    </knoten>

            </knoten>

   </knoten>

   <knoten> 
      <name>bereiche</name> 
      <wert>2</wert> 
      <gesperrt>nein</gesperrt> 
   </knoten>

   <knoten> 
      <name>hilfe</name> 
      <wert>3</wert> 
      <gesperrt>nein</gesperrt> 
   </knoten> 

</sturktur>
############################################

in ein JTree laden zu können.
diese soll dann so aussehen:
Code:
[-]home
    [ ]einstellungen
    [-]person
        [ ]anschrift
[ ]bereiche
[ ]hilfe

ich habe mir die konstrutoren von JTree mal angeschaut. da gibt es eine möglichkeit bei der initialisierung gleich ein HashTable zu übergeben. das würde evt. die ausgabe ermöglichen.

nun brauche ich aber hinter dem JTree auch noch eine datenstruktur, über die ich bei einem klick, oder einen doppelklick (der code hierzu habe ich in den javadocs auf java.sun.com bereits gefunden) die values von <wert> und <gesperrt> zur weiterverarbeitung erhalte. da stehe ich momentan auf dem schlauch. gibt es da eine verbindung von dom oder sax zu JTree, oder muss ich die grafische ausgabe parallel zu der datenstrucktur führen?
und wie lässt sich das realisieren? gibt es evt. irgendwo bereits ein beispiel?

und wie frage ich überhaupt die elemente aus dem xml ab? es geht dabei besonders um die zeile mit <status> falls dieser wert nämlich nicht 'ok' ist, sondern vielleicht 'dberror', gibt es natürlich keine ausgabe, sondern eher eine warnmeldung.[/code]


(edit: code tags)
 

alex-t

Aktives Mitglied
folgendes habe ich bei meiner recherche gefunden, allerdings kann ich das nicht vollkommen nachvollziehen.
ich habe ein problem mit dem parser, da ich den nicht kenne. ist das sax, oder etwas anderes?

und an der markierten stelle fehlt mir logisch der code, wo sich jtree und xml treffen ;) - kann mir jemand diesen schritt hier erklären?

Code:
public class XmlTreeViewerSax extends JFrame {


    // Default parser to use
    private String vendorParserClass =
        "org.apache.xerces.parsers.SAXParser";

    // The base tree to render
    private JTree jTree;

    // Tree Model to use
    DefaultTreeModel defaultTreeModel;

    public XmlTreeViewerSax() {
        // Handle Swing setup
        super("SAX Tree Viewer");
        setSize(600, 450);
    }


    public void init(String xmlURI)
        throws IOException, SAXException {

        DefaultMutableTreeNode base = new DefaultMutableTreeNode(
                                            "XML Document: " + xmlURI);

        // Build Tree Model
        defaultTreeModel = new DefaultTreeModel(base);
        jTree = new JTree(defaultTreeModel);

        // Construct the tree hierarchy
        buildTree(defaultTreeModel, base, xmlURI);

        // Display the results
        getContentPane().add(new JScrollPane(jTree), BorderLayout.CENTER);

    }


    public void buildTree(    DefaultTreeModel treeModel, DefaultMutableTreeNode base, String xmlURI) 
                            throws IOException, SAXException {

        // Create instances needed for parsing
        XMLReader reader = XMLReaderFactory.createXMLReader(vendorParserClass);

        // Register content handler

        // Register error handler

        // Parse
        InputSource inputSource = new InputSource(xmlURI);
        reader.parse(inputSource);

    }  // <<<<<<<<<<<<<<<  <<<<<<<<<<<  <<<<<<<<<<<<<< habe ich da etwas übersehen???

    
    /**
     * Sole entry point to the class and application.
     * @param args Array of String arguments.
     */
    public static void main(String[] args) {

        if (args.length != 1) {
            System.err.println(
                "Usage: java XmlTreeViewerSax " +
                "[XML Document URI]"
            );
            System.exit(1);
        }

        String documentURI = args[0];

        try {
            XmlTreeViewerSax viewer = new XmlTreeViewerSax();
            viewer.init(documentURI);
            viewer.setVisible(true);
        } catch (Exception e) {
            e.printStackTrace();
        }

    }

}
 

alex-t

Aktives Mitglied
Hatte nun einen Tag keine Zeit für Java. Aber nein, ich werde immer noch nicht sonderlich schlau aus dem Code.
 

alex-t

Aktives Mitglied
Ich habe immer noch keine zufriedenstellende Lösung dafür gefunden.
Wünschte das ganze wäre so einfach wie in manch anderen Sprachen. Naja, die suche geht weiter.
 

alex-t

Aktives Mitglied
Diesen Post habe ich nocht nicht gesehen. Ist ja auch nicht so alt gewesen.
Aber es scheint mir etwas übertrieben zu sein JDom dafür zu verwenden. Meint ihr nicht?
 
R

Roar

Gast
wieso? ich benutze immer JDom für XML Verarbeitung und finde es sehr angenehm, und hatte zudem noch nie probleme damit. kann ich nur empfehlen :)

PS.: vielleicht interessiert es dich ja, eigentlich bin ich durch deinen Post auf die Idee gekommen ;)
 

alex-t

Aktives Mitglied
Roar hat gesagt.:
wieso? ich benutze immer JDom für XML Verarbeitung und finde es sehr angenehm, und hatte zudem noch nie probleme damit. kann ich nur empfehlen :)

PS.: vielleicht interessiert es dich ja, eigentlich bin ich durch deinen Post auf die Idee gekommen ;)

Kannst du mir zeigen, was du mit JDom realisiert hast?
Und wie gross ist eigentlich das, was man mit einem Programm im Jar distributieren würde, ich meine jetzt die JDom "lib"?
 
R

Roar

Gast
naja keine allzugroßen XML Files, meistens nur config files wo die einstellungen des users drin gespeichert werden, und auch meine Update funktion in meinem dashboard hilft sich mit XML. Besonders schwer ist das nicht. Schau einfach mal in die JDom API, da findet sich alles.

die jdom.jar die man benötigt ist nur 144 KB groß...
 

alex-t

Aktives Mitglied
Roar hat gesagt.:
naja keine allzugroßen XML Files, meistens nur config files wo die einstellungen des users drin gespeichert werden, und auch meine Update funktion in meinem dashboard hilft sich mit XML. Besonders schwer ist das nicht. Schau einfach mal in die JDom API, da findet sich alles.

die jdom.jar die man benötigt ist nur 144 KB groß...

Hallo Roar

Damit habe ich leider ein Problem. Meine Anwendung soll möglichst klein sein. Momentan 180 KB. Erwartet werden zum Schluß ca. 400 KB sein. 144 KB im plus wären mir da zu viel.

Vielleicht ist diese Entscheidung für manche nicht nachvollziehbar, aber das ist für mein Projekt wirklich wichtig. Weiter benötige ich doch eigentlich nur das Laden von XML und daraus ein JTree parsen. Ich habe mir soeben einen halb-gründlichen Überblick verschafft. Und meiner Meinung nach sieht es so aus, als ob ich eine Mücke mit einem Vorschlaghammer erledigen würde, wenn ich JDom einsetzen würde. Aber bitte nicht falsch verstehen, JDom sieht klasse aus!

Mit freundlichen Grüßen

Alex Tugarev

PS: Hat denn niemand einen XML-JTree mit den Mitteln, die z.B. Java 1.4/1.5 mitbringen, erstellt? Bitte um Infos, Links, etc.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
P JTree aus XML XML & JSON 2
T XML JTree änder sich nicht XML & JSON 2
F XML erzeugen aus JTree und wieder einlesen... XML & JSON 6
M XML in Jtree bearbeiten XML & JSON 2
G Probleme mit XML und JTree XML & JSON 9
F JTree zu XML XML & JSON 2
S JTree - Nur Elemente mit Attributen einfügen XML & JSON 2
D JTree aus XML Datei erstellen & JTree wieder in XML spei XML & JSON 4
J XML-Dokument / JTree XML & JSON 7
P Knoten-Attribute einer xsd-Datei in einem JTree auslesen XML & JSON 18
R Jtree + Attribute XML & JSON 6
R xml mit Jdom lesen und als Jtree anzeigen. XML & JSON 9
Z Erzeugung einer Referenz von Knoten in JTree auf DOMTree XML & JSON 3
J xml in jtree: kleine Hilfe nötig XML & JSON 3
D Xml-Datei in JTree anzeigen und Elemente ausblenden XML & JSON 2
S Datenübernahme in XML Struktur XML & JSON 3
sylo Beim Erzeugen einer XML Datei auch die XML Struktur erzeugen? XML & JSON 11
L XML-Struktur XML & JSON 2
F Zugriff auf durch JAXB erzeugte Object-Struktur... XML & JSON 6
N neue XML-Datei erstellen mit vorhandener Struktur XML & JSON 18
G XML Struktur in Objekte abbilden XML & JSON 3
Z XML Import/Export mit Support von unbekannten Attributen/Elementen XML & JSON 4
krgewb XML mit Attributen und Inhalt innerhalb der Tags XML & JSON 1
B Klassen mit generischen Attributen mit Jackson lesen XML & JSON 4
E XML Datei mit DOM auslesen (Text mit Attributen) XML & JSON 2
B ATTLIST: eigene Attributen XML & JSON 8
H xml-Datei mit Attributen einlesen XML & JSON 3
R Problem beim Auslesen von Attributen XML & JSON 4

Ähnliche Java Themen


Oben