XML in Jtree bearbeiten

Mario170783

Neues Mitglied
Hallo zusammen,

Ich bin neu hier und brauch gleich mal was :oops:

Ich würde gernen ein XML auslesen, es über ein JTREE anzeigen bzw. bearbeiten und dann wieder in eine XML Datei zurückschreiben. Über die Konsole bring ich das auch schon alles hin. Es fehlt mir eigentlich nur mehr die GUI - Umsetzung.

Das XML kann z.b so aussehen (Die Struktur bleibt immer gleich--> es werden nur Elemente gelöscht bzw. hinzugefügt)

[XML]
<?xml version="1.0" encoding="UTF-8"?>
<AlarmConfig>
<AlarmModule>

<ALARM AttributeName="Alarmgenerierung_1.test" AlarmText="Anzeigentest" AlarmGroupIndex="1" Priority="100"/>
<ALARM AttributeName="Alarmgenerierung_2.test" AlarmText="Anzeigentest" AlarmGroupIndex="2" Priority="200"/>
<ALARM AttributeName="Alarmgenerierung_3.test" AlarmText="Anzeigentest" AlarmGroupIndex="3" Priority="300"/>
<ALARM AttributeName="Alarmgenerierung_4.test" AlarmText="Anzeigentest" AlarmGroupIndex="4" Priority="400"/>

</AlarmModule>

<AlarmGruppen>
<ALARMGROUP Group="Alarmgenerierung_1" TextAttribute="G,S,L," AlarmGroupIndex="1"/>
<ALARMGROUP Group="Alarmgenerierung_2" TextAttribute="R,T,L," AlarmGroupIndex="2"/>
<ALARMGROUP Group="Alarmgenerierung_3" TextAttribute="O,T,L," AlarmGroupIndex="3"/>
<ALARMGROUP Group="Alarmgenerierung_4" TextAttribute="G,T,L," AlarmGroupIndex="4"/>

</AlarmGruppen>

</AlarmConfig>
[/XML]
Um das ganze zu laden hab ich eine Loader Klasse geschrieben die mir ein Jdom.Doc zurückliefert:
Java:
package xml;

import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;

import org.jdom.*;
import org.jdom.input.SAXBuilder;

public class XmlLoader {

	
	private String path;
	private Document doc;
	
	public XmlLoader(String p ){
		this.path = p;
		
	}
	
	public Document getJdomDocument(){
		
		File fin = new File(this.path);
		InputStream is = null;
		try {
			is = new BufferedInputStream(new FileInputStream(fin));
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		}
		
		SAXBuilder builder = new SAXBuilder();
		try {
			this.doc = builder.build(is);
		} catch (JDOMException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
		return doc;
	}
	

}
[/XML]


Eine Handler Klasse bekommt eben dieses Doc übergeben und kann damit dann gewisse Aktionen ausführen (Gruppen auslesen, Löschen, hinzufügen etc...)

Java:
package xml;

import java.util.ArrayList;
import java.util.List;

import org.jdom.Attribute;
import org.jdom.Document;
import org.jdom.Element;

public class XmlHandler {
	
	private Document doc;
	private Element root;
	private List<Element> AlarmModule = new ArrayList<Element>();
	private List<Element> AlarmGroups = new ArrayList<Element>();
	
	
	public XmlHandler(Document d){
		this.setJdomDoc(d);
		this.root = doc.getRootElement();
		this.AlarmModule = root.getChild("AlarmModule").getChildren();
		this.AlarmGroups = root.getChild("AlarmGruppen").getChildren();
	}

	public void setJdomDoc(Document doc) {
		this.doc = doc;
		this.root = doc.getRootElement();
		this.AlarmModule = root.getChild("AlarmModule").getChildren();
		this.AlarmGroups = root.getChild("AlarmGruppen").getChildren();
	}

	public Document getJdomDoc() {
		return doc;
	}
	
	public Element getRootElement(){
		return this.doc.getRootElement();
	}
	
	public List<Element> getAlarmGroups() {
		return this.AlarmGroups;
		
	}
	
	public List<Element> getAlarmModules(){
		return this.AlarmModule;
	}
	
	public void AddAlarmModule(String name, String alarmtext,
								int alarmgroupindex, int priority) throws UnknownAlarmModuleException{
		
		if((name == "") || alarmtext == "" || alarmgroupindex <= 0 || alarmgroupindex >= 20 || priority <= 0 || priority >= 500){
			throw new UnknownAlarmModuleException();
		}
		else
		{
		
			Element el = new Element("ALARM").setAttribute("AttributeName", name).
												setAttribute("AlarmText", alarmtext).
												setAttribute("AlarmGroupIndex",Integer.toString(alarmgroupindex)).
												setAttribute("Priority", Integer.toString(alarmgroupindex));
			this.root.getChild("AlarmModule").addContent(el);
		}
	}
	
	public void AddAlarmGroup(String name, String textatt, int alarmgroupindex)
			 throws UnknownAlarmModuleException{

		if((name == "") || textatt == "" || alarmgroupindex <= 0 || alarmgroupindex >= 20 ){
			throw new UnknownAlarmModuleException();
		}
		else
		{
			Element el = new Element("ALARMGROUP").setAttribute("Group", name).
													setAttribute("TextAttribute", textatt).
													setAttribute("AlarmGroupIndex",Integer.toString(alarmgroupindex));
			this.root.getChild("AlarmGruppen").addContent(el);
		}
	}

	public List<Element> getAlarmModulesByName(String name){
		//gibt eine ArrayList mit allen Elementen zurück die den übergebenen Modulnamen besitzen
		List<Element> list = new ArrayList<Element>();
		List<Element> filter = new ArrayList<Element>();
		Element helpelement = new Element("HelpElement");
		helpelement.setAttribute("AttributeName", name);
		
		list =this.getAlarmModules();
		for (Element element : list) {
			if(element.getAttribute("AttributeName").toString()
					.equals(helpelement.getAttribute("AttributeName").toString())){
			
			filter.add(element);
			}
		}
		
		return filter;
		
	}

	public List<Element> getAlarmModulesByPrio(int prio){
		//gibt eine ArrayList mit allen Elementen zurück die die übergebene Prioritaet besitzen
		List<Element> list = new ArrayList<Element>();
		List<Element> filter = new ArrayList<Element>();
		Element helpelement = new Element("HelpElement");
		helpelement.setAttribute("Priority", Integer.toString(prio));
		
		list =this.getAlarmModules();
		for (Element element : list) {
			if(element.getAttribute("Priority").toString()
					.equals(helpelement.getAttribute("Priority").toString())){
			
			filter.add(element);
			}
		}
		
		return filter;
	
	}
	
	public List<Element> getAlarmModulesByGroup(int group){
		//gibt eine ArrayList mit allen Elementen zurück die die übergebene Alarmgruppe besitzen
		List<Element> list = new ArrayList<Element>();
		List<Element> filter = new ArrayList<Element>();
		Element helpelement = new Element("HelpElement");
		helpelement.setAttribute("AlarmGroupIndex", Integer.toString(group));
		
		list = this.getAlarmModules();
		for (Element element : list) {
			if(element.getAttribute("AlarmGroupIndex").toString()
					.equals(helpelement.getAttribute("AlarmGroupIndex").toString())){
			
			filter.add(element);
			}
		}
		
		return filter;
		
	}
	
	public List<Element> getAlarmGroupsByGroup(int group){
		//gibt eine ArrayList mit allen Elementen zurück die die übergebene Alarmgruppe besitzen
		List<Element> list = new ArrayList<Element>();
		List<Element> filter = new ArrayList<Element>();
		Element helpelement = new Element("HelpElement");
		helpelement.setAttribute("AlarmGroupIndex", Integer.toString(group));
		
		list = this.getAlarmGroups();
		for (Element element : list) {
			if(element.getAttribute("AlarmGroupIndex").toString()
					.equals(helpelement.getAttribute("AlarmGroupIndex").toString())){
			
			filter.add(element);
			}
		}
		
		return filter;
		
	}
	
	public void deleteAlarmModule(List<Element> list){
		
		for(Element el : list ){
			this.root.getChild("AlarmModule").removeContent(el);
		}		
	}
	
	public void deleteAlarmGroups(List<Element> list){
		
		for (Element el : list){
			this.root.getChild("AlarmGruppen").removeContent(el);
		}
	}
}

Der Saver speichert das DOC dann wieder in eine Datei:
Java:
package xml;


import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;


import org.jdom.*;
import org.jdom.output.XMLOutputter;

public class XmlDocWriter {
	
	private String path;
	private Document doc;
	
	public XmlDocWriter(Document d){
		this.doc = d;		
	}

	public boolean WriteDocToFile(String p){
		this.path = p;
		File fout = new File(this.path); 
		try {
			XMLOutputter out = new XMLOutputter();
			OutputStream fos = new FileOutputStream(fout);
			out.output(this.doc, fos);
			
			
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		}
		catch (IOException e){
			e.printStackTrace();
		}
		return true;	
	}
}

Wie schon gesagt mir fehlt einfach der Ansatz das in ein JTREE Element zu verpacken bzw. da verarbeiten zu können!:bahnhof: Vlt. kann mir ja jemand einen kleinen Tipp geben :)

Besten Dank,
Mario
 

eRaaaa

Top Contributor

Mario170783

Neues Mitglied
Danke erstmal für den Tipp. Werd mir das gleich mal anschauen!
Wegen des Stringvergleichs: Das war noch eine alte Version in der neuen hab ich es schon richtig! Damals hatte ich es noch nicht so mit Referenzen.. :)

mfG,
Mario
 
Ä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
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
A JTree Struktur aus XML (mit Attributen) XML & JSON 12
D Xml-Datei in JTree anzeigen und Elemente ausblenden XML & JSON 2
M Text eines Elements in XML Datei mit JAVA bearbeiten und kompletten Element-Zweig hinzufügen XML & JSON 16
K Wie xml bearbeiten XML & JSON 5
Z XML Bearbeiten ISO 8859-15 XML & JSON 16
M Wie kann ich eine unter SAX eingelesene XML bearbeiten? XML & JSON 4
F Hilfe beim bearbeiten von XML elemente XML & JSON 3
S XML einlesen, analysieren, bearbeiten & als Textdatei ausgeben XML & JSON 1
Mike90 mit POI xls bearbeiten XML & JSON 10
N value Wert einer XML Datei mit JAVA bearbeiten XML & JSON 21
Mike90 Daten aus DB in ExcelTabelle lesen + bearbeiten + formatieren XML & JSON 2
P Große XML Datei mittels JDOM bearbeiten / einlesen XML & JSON 6
G XML-Datei durch Ausführen des JAR-Reciepe bearbeiten XML & JSON 19
N XML effizient darstellen und bearbeiten XML & JSON 9
B XML öffnen, bearbeiten, speichern ohne JDOM XML & JSON 4

Ähnliche Java Themen

Neue Themen


Oben