JDOM XML Datei darstellen Fehler!

sundance

Mitglied
Guten Tag Leute,

ich habe die Aufgabe eine XML- Datei in Baumstruktur visuell darzustellen. Ich habe mir überlegt es in Java mit JDOM mit JTree zu machen. Jedoch fällt mir das etwas schwer, da ich längere Zeit nicht programmiert habe.

Ich habe folgendes Tutorial benutzt: How to display XML in a JTree using JDOM (Java source code)

und den Code auch so übernommen.

Führe ich ihn aus bekomme ich jedoch folgende Fehlermeldung:

Error: unable to build tree from xml:
java.lang.Exception:
org.jdom2.JDOMException: Unable to create SAX2 XMLReader.

Ich befürchte, dass mir eine JAR- Datei fehlt bzw. ich sie nicht eingebunden habe. Habe bereits nach der Fehlermeldung gesucht und nichts nutzbares gefunden.

Ich hoffe mir kann jemand helfen das Problem zu lösen. Gibt es ggf. noch andere Möglichkeiten die Aufgabe zu lösen?


EDIT: Außerdem zeigt er mir im Code an, dass der SAXBuilder veraltet ist.
 
Zuletzt bearbeitet:

sundance

Mitglied
Ich habe vergessen die JARs einzufügen, nun stellt er mir die XML auch in Baumstruktur da.

Ich kann die einzelnen Nodes auch anklicken zum bearbeiten, jedoch übernimmt er die Eingabe nicht und setzt sie sofort zurück. Woran kann das liegen? ich füge mal den Code der Klasse ein:

Java:
package com.arsitech.xml;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Menu;
import java.awt.MenuBar;
import java.awt.MenuItem;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.util.Properties;

import javax.swing.JEditorPane;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JSplitPane;
import javax.swing.JTree;
import javax.swing.WindowConstants;
import javax.swing.event.TreeModelListener;
import javax.swing.tree.TreeModel;


/**
 * Simple gui to display an xml tree.
 */
public class XMLViewer extends JFrame {
    
    private final String title = "JDOM XML Tree";
    private final MenuBar menuBar = new MenuBar();
    private final Menu fileMenu = new Menu();
    private final MenuItem open = new MenuItem();
    private final JFileChooser fileChooser = new JFileChooser();
  
    private final XMLTree xmlTree;
    private File file;
    public JTree tree;
    private Exception exception;
    
    private final int windowHeight = 600;
    private final int leftWidth = 380;
    private final int rightWidth = 600;
    private final int windowWidth = leftWidth + rightWidth;
    private final Font treeFont = new Font("Lucida Console", Font.BOLD, 14);
    private final Font textFont = new Font("Lucida Console", Font.PLAIN, 13);
    
    
    /**
     * Creates a simple gui for viewing xml in a tree.
     */
    public XMLViewer() {        
        
        setTitle(getClass().getSimpleName());
        setPreferredSize(new Dimension(windowWidth, windowHeight));
        setFocusable(true);
        setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);        
        
        xmlTree = new XMLTree();
        
        fileChooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
        fileChooser.setFileFilter(new XMLFileFilter());
        fileChooser.setCurrentDirectory(new File("C:/Desktop"));
        
        
        fileMenu.setLabel("File");
        open.setLabel("Browse");
        open.addActionListener(new MyActionListener());
        
        makeFrame();
        
        open.dispatchEvent(new ActionEvent(open,1001,open.getActionCommand()));
    }
    
    /**
     * Construct a frame of the most recently read-in document.
     */
    private void makeFrame() {
        
        getContentPane().removeAll();
                
        fileMenu.add(open);
        menuBar.add(fileMenu);
        setMenuBar(menuBar);
        
        pack();
        setVisible(true);
    }
    
    /**
     * Displays the tree.
     * 
     * @param tree JTree to display
     */
    public void display() {
        try {
            makeFrame();
            
            JScrollPane treeScrollPane = null;
            JScrollPane textScrollPane = null;
            
            // Build left-side view
            if(tree != null) {
                tree.setFont(treeFont); 
                tree.setEditable(true);
                treeScrollPane = new JScrollPane(tree);
                treeScrollPane.setPreferredSize(new Dimension(leftWidth, windowHeight));
            } else {
                JEditorPane errorMessagePane = new JEditorPane();
                errorMessagePane.setEditable(false);
                errorMessagePane.setContentType("text/plain");
                errorMessagePane.setText("Error: unable to build tree from xml:\n"+ exception.toString());
                errorMessagePane.setCaretPosition(0);
                treeScrollPane = new JScrollPane(errorMessagePane);
            }
            // Build right-side view
            if(file != null) {
                StringBuilder sb = new StringBuilder();
                
                //TODO show validation

                try {
                    BufferedReader reader = new BufferedReader(new FileReader(file));
                    String line = "";
                    while((line = reader.readLine()) != null) {
                        sb.append(line + "\n");
                    }
                    reader.close();
                } catch (Exception e) {
                    System.err.println("exception when reading file for display");
                    e.printStackTrace();
                } 
                
                JEditorPane textPane = new JEditorPane();
                textPane.setEditable(false);
                textPane.setContentType("text/plain");
                textPane.setText(sb.toString());
                textPane.setCaretPosition(0);
                textPane.setFont(textFont);
                textScrollPane = new JScrollPane(textPane);
                textScrollPane.setPreferredSize(new Dimension(rightWidth, windowHeight));
            }
    
            // Build split-pane view
            JSplitPane splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,
                    treeScrollPane, textScrollPane);
            
            splitPane.setContinuousLayout(true);
            splitPane.setDividerLocation(leftWidth);
            splitPane.setPreferredSize(new Dimension(windowWidth + 10,
                    windowHeight + 10));
    
            // Add GUI components
            setLayout(new BorderLayout());
            add("Center", splitPane);
            pack();
            setVisible(true);
        } catch (Exception e) {
            System.err.println("error when updating xml viewer");
            e.printStackTrace();
        }
    }
    
    /** listener for when user selects a file to view */
    private class MyActionListener implements ActionListener {

        public void actionPerformed(ActionEvent ae) {
            if (ae.getSource() == open) {

                int returnVal = fileChooser.showOpenDialog(null);

                if (returnVal == JFileChooser.APPROVE_OPTION) {

                    //reset for currently selected message
                    exception = null;
                    
                    file = fileChooser.getSelectedFile();
                    
                    // update the gui for this file
                    setTitle(title + " | " + (file != null ? file.getAbsolutePath() : "Select A File"));
                    
                    // remember last directory used
                    fileChooser.setCurrentDirectory(file);
                    
                    try {
                        xmlTree.parseFile(file);
                    } catch (Exception e) {
                        exception = e;
                    }
                    tree = xmlTree.getTree();
                    display();
                }
            }
        }
    }
    
    public static void main(String[] argv) {
        new XMLViewer();
    }
}
 

sundance

Mitglied
Ok das Problem hat sich auch erledigt und ein neues tritt auf.

Und zwar möchte ich den veränderten JTree wieder in eine XML Datei speichern. Beziehungsweise die Daten des JTree wieder zurück in eine XML Datei.

Jemand eine mögliche Lösung? Habe bereits mehrere Stunden gegoogled aber nichts sinnvolles gefunden
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Z XML Datei mit JDOM einlesen und verarbeiten XML & JSON 6
P Große XML Datei mittels JDOM bearbeiten / einlesen XML & JSON 6
M mit JDOM XML-Datei einlesen, die nicht "well-formed&quo XML & JSON 3
K xml Datei mit JDOM erzeugen, Problem Namespaces XML & JSON 1
P JDOM oder SAX XML & JSON 3
Hijo2006 Grundsätzliches zu JDOM 2.x XML & JSON 1
W Kindelemente mit JDOM eines bestimmten Attributes auslesen XML & JSON 6
S JDom XML ein Element hinzufügen. XML & JSON 1
C JDOM: Value ohne Unterelemente auslesen XML & JSON 1
J JDOM XMLOutputter getPrettyFormat() XML & JSON 3
H JDOM setAttribute Reihenfolge XML & JSON 3
B XML aus einer URL im Internet lesen (JDOM) XML & JSON 4
F Aus XML mit JDOM aus Elementattributen Werte rauslesen XML & JSON 4
R sax, stax, jdom, jaxb? List von Objekten speichern und laden XML & JSON 6
C xml validierung gegen xsd mit jdom: Fehlermeldung Cannot find the declaration of element ... XML & JSON 8
T Dom, Jdom, Sax XML & JSON 8
Helgon MalformedByteSequenceException und null JDOM Attribute XML & JSON 5
Helgon JDOM schreibt nicht XML & JSON 2
A XSl mit JDom auslesen XML & JSON 1
G xml, jdom "Entität wurde referenziert aber nicht deklariert." XML & JSON 4
A XSL und JDom XML & JSON 3
G jdom-Klassen in Eclipse importieren XML & JSON 2
S JDOM ohne XML Header erzeugen? XML & JSON 2
G JDOM - aus Children-Liste ein Child direkt ansprechen ohne XPath? XML & JSON 9
S JDOM nur Attribut Name XML & JSON 2
X JDom für SOAP Dateien geeignet? XML & JSON 3
T Xpath & JDOM Element Pfad ausgeben XML & JSON 2
M XML Parsen JDOM NullPointerEcxeption XML & JSON 7
S jdom hasChildren()? XML & JSON 1
T Frage zu getContent unter jdom XML & JSON 6
Z Tutorial für JDOM (XSD-Shema) XML & JSON 3
D jdom, xml, login-system XML & JSON 4
N JDOM: XML einlesen XML & JSON 4
O Parsen einer XML mit JDOM ohne Doctype Declaration XML & JSON 2
lordcarlos jdom zu iso-8859-15 zwingen XML & JSON 4
P jdom XML-Encoding auslesen XML & JSON 12
E JDOM - letzem child Attribut hinzufügen XML & JSON 4
H Schema-Validierung mit JDOM XML & JSON 2
lordcarlos JDOM und entfernen von children XML & JSON 4
E JDOM - Problem beim Zusammenfügen zweier Dateien XML & JSON 2
T jdom.jar als Relativer Pfad in Eclipse einbinden XML & JSON 4
sparrow JDom Element.getChild("Name") liefert null obwohl vorhanden XML & JSON 4
S XML, UTF-8, JDOM und Umlaute XML & JSON 3
E XML - JDOM - Bäume: was würdet ihr hier machen? XML & JSON 11
A JDOM: Wert schreiben bzw. ändern XML & JSON 6
T JDOM Bibiliothek XML & JSON 3
K JDOM vs. DOM, Schnittstellen XML & JSON 5
0x7F800000 jdom mit xml.transform inkompatibel, was soll ich nehmen? XML & JSON 2
T EXSD auslesen mit XPath und JDOM XML & JSON 8
A JDOM und Sonderzeichen < > XML & JSON 17
G Simples XML File einlesen mit JDom. Prefix not bound ? XML & JSON 2
N jdom problem beim lesen von child elementen XML & JSON 5
N problem bei xml lesen mit jdom XML & JSON 2
S Ampersand im Jdom-Element XML & JSON 2
N jdom - xslt-Verweis in .xml einfügen XML & JSON 3
S Jdom+java webstart XML & JSON 4
K html -> cyberneko -> xml -> jdom . XML & JSON 3
I JDom Text ändern XML & JSON 4
C jdom.Element nicht vorhanden? XML & JSON 4
W JDOM element ändern funzt nich :( [problem gelöst] XML & JSON 3
C XPath in JDOM klappt nicht XML & JSON 2
S Harte Nuss mit XML und JDOM XML & JSON 2
H mit JDOM Verarbeitungsanweisungen und Kommentare auslesen XML & JSON 2
B jdom: getChildren() problem XML & JSON 4
T Bild in XML per JDOM XML & JSON 4
D JDOM erzeugt leere xmlns Attribute XML & JSON 4
T Elemente zählen mit JDOM in XML XML & JSON 7
B jdom document aus string erzeugen? XML & JSON 1
M JDOM und XPath, zu Element zugehörigen XPath-Ausdruck XML & JSON 5
F JDOM und XPath - Problem mit Namespace ohne Prefix XML & JSON 5
T XML mit JDOM auslesen => langsam? XML & JSON 7
B jdom outputter ohne attribute XML & JSON 2
C XML encoding UTF-8 und JDOM XML & JSON 4
P Probleme mit JDom . addContent(int index,Collection c) XML & JSON 2
R key aus xml lesen mittels jdom XML & JSON 5
M JDOM Element ohne Inhalt kopieren ? XML & JSON 3
X JDOM SAXBuilder Validationschema - Problem XML & JSON 8
G einzelne tags mit jdom auslesen XML & JSON 4
F XML ( ca. 280 MB) JDom & SAXBuilder lesen = OutOfMemoryE XML & JSON 4
K JDOM SAXBuilder einlesen XML & JSON 6
S Ausgabe "asXML" mit Jdom XML & JSON 2
B Element an bestimmter Stelle einfügen (JDOM) XML & JSON 8
G XML mit JDOM ausgeben [Klappe die 1Mio.ste] XML & JSON 2
F XML mit JDOM auslesen XML & JSON 2
D JDOM auf den PC machen XML & JSON 6
J JDOM Unicode XML & JSON 2
J schema-Validierung mit xerces und jdom: bug in java 1.4? XML & JSON 9
P JDOM Werte verändern XML & JSON 4
S OutOfMemory mit JDOM XML & JSON 6
S org.jdom.document in String umwandeln. XML & JSON 2
M ISO-8859-1 >> UTF-8 + JDOM + Verwirrung. XML & JSON 2
J [Newbie] [JDOM] Element aus XML entfernen klappt nicht XML & JSON 4
J JDOM mit XML-Schema XML & JSON 8
P HTML-Sting in JDOM XML & JSON 7
B JDOM && ObjectOutputStream XML & JSON 8
B Versionskonflikt bei JDOM XML & JSON 9
B JDom -- getChild() liefert nicht nachvollziehbar null XML & JSON 2
M JDOM parse Exception XML & JSON 3
G JDom encoding ändern XML & JSON 2
R JDOM Root-Element entfernen aber Rest behalten XML & JSON 10

Ähnliche Java Themen

Neue Themen


Oben