Hallo,
das Problem hat zwar mit XML zu tun, ist aber wahrscheinlich doch eher ein Anfängerfehler.
Ich habe mir einen DOM-Parser geschrieben, mit Darstellung in Baumstruktur. Die XML-Datei soll dabei frei gewählt werden können (ist schon realisiert). Das Parsen der ersten Datei funktioniert auch problemlos, doch wenn ich eine andere Datei selektiere, wird sie im Baum nicht richtig dargestellt
Der Fehler schein auch nicht beim Parsen zu liegen, sondern eher bei der Darstellung als Baum, hier werden mir (teilweise) noch die alten Elemente angezeigt.
Hier mal kurz der relevante Code:
und die Klasse AdapterNode
Wahrscheinlich habe ich irgendwo was nicht richtig initialisiert oder so...
Bin für jegliche Hilfe (oder auch nur Schubser in die richtige Richtung) dankbar.
Beste Grüße,
der Buster
das Problem hat zwar mit XML zu tun, ist aber wahrscheinlich doch eher ein Anfängerfehler.
Ich habe mir einen DOM-Parser geschrieben, mit Darstellung in Baumstruktur. Die XML-Datei soll dabei frei gewählt werden können (ist schon realisiert). Das Parsen der ersten Datei funktioniert auch problemlos, doch wenn ich eine andere Datei selektiere, wird sie im Baum nicht richtig dargestellt
Der Fehler schein auch nicht beim Parsen zu liegen, sondern eher bei der Darstellung als Baum, hier werden mir (teilweise) noch die alten Elemente angezeigt.
Hier mal kurz der relevante Code:
Code:
protected void parseFile(String xmlfile) {
try {
DOMParser parser = new DOMParser();
parser.parse(xmlfile);
//Document doc = null;
Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument();
doc = parser.getDocument();
Element wurzel = doc.getDocumentElement();
AdapterNode.setTreeElementNames(0, wurzel.getNodeName());
// HTML-Formular erzeugen
final HTMLFormular htmlPane = new HTMLFormular();
// XML-Dokument in Baum umwandeln
DefaultMutableTreeNode rootnode = new AdapterNode(doc);
DefaultTreeModel treemodel = new DefaultTreeModel(rootnode);
JTree tree = new JTree(treemodel);
tree.setRootVisible(false); // root(leer) wird nicht angezeigt
// linkes Fenster (Baumstruktur)
final JScrollPane sp1 = new JScrollPane(tree);
sp1.setBorder(BorderFactory.createEtchedBorder());
sp1.setPreferredSize(new Dimension(400,250));
// rechtes Fenster (HTML)
final JScrollPane sp2 = new JScrollPane(htmlPane);
sp2.setBorder(BorderFactory.createEtchedBorder());
sp2.setPreferredSize(new Dimension(450,250));
sp2.setLayout(new ScrollPaneLayout());
JSplitPane splitpane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,sp1,sp2);
getContentPane().add(splitpane, BorderLayout.CENTER);
// Reaktion auf Selektion im Baum
tree.addTreeSelectionListener(new TreeSelectionListener() {
public void valueChanged(TreeSelectionEvent e) {
TreePath p = e.getNewLeadSelectionPath();
if ( p != null) {
final AdapterNode node = (AdapterNode) p.getLastPathComponent();
/*###########################*/
String htmlText = "<form><table>" + node.zeige() + "<tr><td colspan=\"10\"><input type=\"submit\"></td></tr></table></form>";
htmlPane.setText(htmlText);
htmlPane.addPropertyChangeListener("data", new PropertyChangeListener() {
public void propertyChange(PropertyChangeEvent evt) {
htmlPane.getData(htmlPane,AdapterNode.alFListe);
node.saveXML(htmlPane);
}
});
/*###########################*/
}
}
});
getContentPane().setVisible(true);
getContentPane().validate();
getContentPane().repaint();
}
// Fehlerbehandlung
catch (Exception err){
System.err.println("\nFehler");
err.printStackTrace();
System.exit(1);
}
und die Klasse AdapterNode
Code:
public class AdapterNode extends DefaultMutableTreeNode {
protected Node node;
//Konstruktor
public AdapterNode(Node node) {
super(node);
this.node = node;
}
Wahrscheinlich habe ich irgendwo was nicht richtig initialisiert oder so...
Bin für jegliche Hilfe (oder auch nur Schubser in die richtige Richtung) dankbar.
Beste Grüße,
der Buster