XML- Datei einlesen

Status
Nicht offen für weitere Antworten.

PollerJava

Top Contributor
Hallo,

meine XML- Dateienstruktur schaut momentan so aus wie unten dargestellt. Ich möchte jetzt in die XML- Datei nochwas dazufügen, das aber irgendwie extra sein sollte, z.B.: <Preferences1> und <Preferences2>

Wie lasst sich das einfach realisieren?
Vielleicht hat jemand eine Idee.

Danke.

lg


<Preferences>
<Element type="text1" id="0">
<varID type="init1" id="0">
<State id="0">
</State>
</varID>
</Element>
<Element>
usw.....
</Element>
</Preferences



SO frage ich mom. ab:


Code:
 private Vector<ElementState> readStates(String xmlFile) throws JDOMException, IOException 
	{
	Vector<ElementState> vStates= new Vector<ElementState>();			
	SAXBuilder builder = new SAXBuilder();	
	Document doc = builder.build(xmlFile);
        Element root = doc.getRootElement();
        
	Iterator iElements = root.getChildren("Element").iterator();
	while (iElements.hasNext())                                            
	    {
	    Element element = (Element) iElements.next();	
	    Iterator iVarID = element.getChildren("varID").iterator();
	    while (iVarID.hasNext())
		{
		Element varID = (Element) iVarID.next();
		Iterator iStates = varID.getChildren("State").iterator();  
		while (iStates.hasNext())					
		    {
 

Faruun

Aktives Mitglied
Hallo,

also xml-Dateien können meines Wissens nur ein root-Element haben. Dementsprechend würde das hier nicht gehen:

Code:
<Preferences>
<Element type="text1" id="0">
<varID type="init1" id="0">
<State id="0">
</State>
</varID>
</Element>
<Element>
usw.....
</Element>
</Preferences>
<Preferences1>
</Preferences1>

Dazu müsstest Du ein root-Element rumbauen.
Die Datei müsste dann so aussehen:

Code:
<root>
<Preferences>
<Element type="text1" id="0">
<varID type="init1" id="0">
<State id="0">
</State>
</varID>
</Element>
<Element>
usw.....
</Element>
</Preferences>
</root>


Darunter kannst Du dann via JDOM problemlos weitere Elemente anfügen.
Mal freihändig:

Code:
Element newElement = new Element("Preferences1");
root.addContent(newElement);

Ich hoffe das war es, was Du meintest.

Gruß,
Faruun
 

PollerJava

Top Contributor
Vielen Dank!!,


ich hätte noch eine Frage zum Einlesen einer XML- Datei und zwar habe ich fplgenden aufbau wie unten dargestellt:

Im Programm suche ich jetzt eben nach panel und speichere es dann in ein Objekt,

Mein Problem ist jetzt, dass ich nicht weiß, wieviel panels es gibt (unten sind es 3) und wenn alle den gleichen Namen haben, dann speichere ich nur eins davon (das letzte eben).
Wie könnte ich das machen, dass ich beliebig viele <panel> in der XML- Datei anführen kann und diese auch in meinem Objekt dann gespeichert werden?

Danke für die immer hilfreichen Antworten!!

lg



Code:
if (state.getName().equals("panel"))
                            newState.setPanel(state.getText().trim());

Code:
<State id="0">
				<panel>				PanelA				</panel>
				<panel>				PanelB				</panel>
				<panel>				PanelC				</panel>
			</State>
 

Faruun

Aktives Mitglied
Du kannst doch mit einer Schleife durchzählen lassen. Ich versteh das Problem grad nicht so ganz. ???:L
In Deinem Document hast Du doch die gesamte xml-Struktur im Zugriff und mit JDOM hast Du viele Möglichkeiten, diese zu bearbeiten, zu durchsuchen etc.

Schau Dir mal die API an: http://www.jdom.org/docs/apidocs/index.html

Gruß,
Faruun
 

PollerJava

Top Contributor
Mein Problem ist, ich laufe die <States> durch und möchte die panels mit der Methode setPanel des Objektes newState speichern. Leider wird momentan bei mir nur ein panel gespeichert -> ich habe drei <panel> und mit der Methode setPanel() schreibe ich aber immer wieder drüber. Ich weiß eben nicht wie ich das machen kann damit ich alle drei Panels speichere (bzw. natürlich deren Namen)

Vielleicht weiß da jemand Abhilfe.

Vielen Dank

Code:
 while (iPrefs.hasNext())					
			{
			Element state = (Element) iPrefs.next();  
                        if (state.getName().equals("panel"))
                             newState.setPanel(state.getText().trim());
 

Faruun

Aktives Mitglied
Mal so aus der Hand ...

also ... ich würde mir das Element states holen ... das hast Du ja scheinbar schon, korrekt?

So ... dann brauchst Du erstmal alle children ... also:

Code:
List <Element> listOfChildren = state.getChildren("panel");

so ... nun hast du automatisch eine Liste mit allen Children namens panel.
nun kannst Du Deine Objekte bauen, und zwar so lange Du noch Elemente in der Liste hast.

Code:
for (Iterator i = listOfChildren.iterator(); i.hasNext();) {
      Element e = (Element) i.next();
...
}

Da hast Du Dein einzelnes Element und mit dem kannst Du nun was weiß ich anstellen ;)

Gruß,
Faruun
 

PollerJava

Top Contributor
Nöö, das ist leider nicht mein Problem,
Das Problem liegt schon beim speichern der <panel>, ich speichere beim ersten duchrlauf den ersten Eintrag von <panel> mit setPanel() und beim zweiten durchlauf der for- Schleife speichere ich diesen Eintrag wieder mit setPanel() und verliere somit den ersten Eintrag -> das sit eben mein Problem.
 

Faruun

Aktives Mitglied
Du verlierst das 1. setPanel(), obwohl es mit unterschiedlichen Objekten gemacht wird? :bahnhof:
 

PollerJava

Top Contributor
Nein, es ist ja das gleiche Objekt und ich möchte eben in diesem einem Objekt die 3 <panel> auslesen und in diesem Objekt gespeichert haben und wieß eben nicht genau, wie ich das machen kann.

Wenn ich es mit
<panel1>
<panel2>
<panel3>

und setPanel1(), setPanel2() und setPanel3() machen würde gings ja, aber das kann ich nicht machen, da ich nicht weip, wieviele <panel> ich habe.

Ich hoffe ich konnte es jetzt besser erklären.

Vielen Dank für Eure/Deine Antworten auf jeden Fall.

lg
 

Faruun

Aktives Mitglied
Hmm ... okay ... ich versteh leider nicht mehr so wirklich, wohin Du willst.

Wenn ich nochmal auf die von mir vorgeschlagene for-Schleifen kommen darf:

Du hast jeweils die Objekte panel einzeln ... an der Zahl dann drei, wenn es denn drei sind. Wenn Du in der for-Schleife Dein setPanel() machst, dann sollte das doch funktionieren, oder? ???:L Ich kenn mich leider nicht so mit setPanel() aus ...

Warum willst Du denn alle drei panel in einem Objekt halten? JDOM verpflückt Dir das doch schon so schön in drei einzelne, unabhängig voneinander existierende Elemente.
 
U

user0001

Gast
Wie wäre es damit, wenn du es so machst (mit for-Schleife) wie Faruun oben gesagt hat und du innerhalb dieser Schleife jedes panel zu einer Liste hinzufügst. Und nachdem du die Schleife durch hast, kannst du ja setPanel(meineListe) machen ... und da steht halt auch eine Liste dahinter.

Gruß

user0001
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Bookmark HTML Datei einlesen, alle Links erhalten und manche editieren..? (aktuell JSoup) Allgemeine Java-Themen 4
Master3000 Java Datei mehrmals einlesen Allgemeine Java-Themen 4
R Sonderzeichen aus Datei einlesen und in Datei ausgeben. Allgemeine Java-Themen 17
F Datei in String-Array einlesen Allgemeine Java-Themen 8
N Datei Zeilenweise Einlesen, Versteckte Zeichen Allgemeine Java-Themen 5
R .txt Datei einlesen und auf der Konsole ausgeben lassen Allgemeine Java-Themen 11
K Datei (CSV-ähnlich) in Java einlesen & mit teil der Daten Graphen erstellen Allgemeine Java-Themen 9
J Input/Output Word Datei einlesen, verarbeiten und abspeichern Allgemeine Java-Themen 3
J Java 8 Datei einlesen Allgemeine Java-Themen 1
K Input/Output String aus einer Datei einlesen und in anderer Datei speichern Allgemeine Java-Themen 20
R Datei einlesen mit Win7 Allgemeine Java-Themen 8
F Datei einlesen funktioniert nicht Allgemeine Java-Themen 3
J BufferedReader Datei einlesen Allgemeine Java-Themen 8
J Jar Datei mit anderer .jar einlesen Allgemeine Java-Themen 4
J Best Practice Java 8 Datei einlesen und verarbeiten Allgemeine Java-Themen 2
T xls-Datei per Apache Commons CsvParser einlesen UTF-8 Zeichen russische Zeichen Allgemeine Java-Themen 2
D Wörter aus Datei einlesen Allgemeine Java-Themen 9
Ananaskirsche Input/Output Zeile aus Datei einlesen Allgemeine Java-Themen 10
H Excel Datei einlesen mit Apache POI Allgemeine Java-Themen 1
P Input/Output Datei einlesen per Scanner(f) - mit Cron gehts nicht Allgemeine Java-Themen 1
AssELAss XML Datei einlesen und anschließen formatiert ausgeben in Datei Allgemeine Java-Themen 0
L Input/Output Datei einlesen und Inhalt in Array schreiben Allgemeine Java-Themen 3
M Parameter-Datei einlesen (zeilenweise); Dateiintegrität Allgemeine Java-Themen 7
I Input/Output .csv Datei einlesen Allgemeine Java-Themen 4
S Datei in File-Objekt mit UTF-8 einlesen Allgemeine Java-Themen 2
K JAVA Datei einlesen Allgemeine Java-Themen 2
F JavaMail - Lokale eMail-Datei einlesen und parsen? Allgemeine Java-Themen 9
Q Text Datei einlesen Allgemeine Java-Themen 27
M Einlesen einer Datei in Java Allgemeine Java-Themen 3
D class Datei einlesen Allgemeine Java-Themen 4
A Datei als Object einlesen und das Object als Singleton instance setzen. Allgemeine Java-Themen 13
C Datei als ASCII text einlesen ? Allgemeine Java-Themen 16
D Shortcut statt Datei einlesen Allgemeine Java-Themen 2
B Applet .java Datei einlesen, anzeigen Allgemeine Java-Themen 3
S Daten in Array als INT-Wert einlesen - jetzt als csv Datei Allgemeine Java-Themen 5
J Große Datei einlesen und gestückelt verarbeiten Allgemeine Java-Themen 4
Y Property Datei einlesen Allgemeine Java-Themen 2
FoolMoon Datei zeilenweise einlesen, aber nicht die erste Zeile! Allgemeine Java-Themen 3
J Mit Scanner-Klasse eine Datei zeilenweise einlesen und nur bestimmte Zeichen abfragen Allgemeine Java-Themen 11
G Datei einlesen: Umlaute sind Fragezeichen Allgemeine Java-Themen 23
G HTML-Datei einlesen, Plain Text in Textfile speichern Allgemeine Java-Themen 4
Y Excel datei einlesen und inhalt verarbeiten Allgemeine Java-Themen 8
H Mit Log4j erzeugte Datei einlesen Allgemeine Java-Themen 2
data89 Datei aus ausführbarer Jar einlesen Allgemeine Java-Themen 2
Noar Datei einlesen, bearbeiten, ausgeben Allgemeine Java-Themen 5
H Datei (zeilenweise) einlesen Allgemeine Java-Themen 3
D Datei im DOS/ASCII-Format einlesen. Allgemeine Java-Themen 9
D binäre Datei einlesen und schreiben? Allgemeine Java-Themen 3
J Text einer .csv Datei einlesen und Zeile in NEUE Zeile hänge Allgemeine Java-Themen 1
H2SO3- csv Datei mit unterschiedlichen Formatierungen einlesen Allgemeine Java-Themen 15
F Double mit Streams aus Datei einlesen Allgemeine Java-Themen 3
A Ini Datei einlesen Allgemeine Java-Themen 5
MQue Datei einlesen Allgemeine Java-Themen 10
K Datei als HEX oder dezimal gem. ASCII einlesen Allgemeine Java-Themen 4
MQue Datei einlesen/auslesen Allgemeine Java-Themen 4
T (Binary)Datei einlesen, Inhalt ändern, Datei schreiben Allgemeine Java-Themen 4
G Datei einlesen und in HashMap verarbeiten Allgemeine Java-Themen 3
G Einlesen von Parameterwerten aus einer txt-Datei Allgemeine Java-Themen 2
pikay TXT-Datei in 2-Dimensionales Array Einlesen Allgemeine Java-Themen 8
J XML-Datei byteweise einlesen und Kodierung auslesen Allgemeine Java-Themen 4
spacegaier Performanceproblem beim Einlesen aus Datei mittels Threads Allgemeine Java-Themen 23
P IOException beim einlesen einer XML- Datei Allgemeine Java-Themen 8
M bei Klick auf Button Datei einlesen Allgemeine Java-Themen 3
S große Datei einlesen! Allgemeine Java-Themen 7
S Problem beim Einlesen von byte-werten aus datei Allgemeine Java-Themen 2
E Datei rückwärts einlesen Allgemeine Java-Themen 5
B Problem bei Datei einlesen (Applet) Allgemeine Java-Themen 4
G 180 MB CSV-datei einlesen. Problem! Allgemeine Java-Themen 14
L Frage zu java.util.regex und Einlesen einer Datei Allgemeine Java-Themen 2
D CSV Datei einlesen Allgemeine Java-Themen 17
T iso datei (Image) mit Java einlesen und Inhalt entpacken Allgemeine Java-Themen 3
R Datei einlesen, Strings hinzufügen, abspeichern Allgemeine Java-Themen 4
K .ini Datei einlesen? Allgemeine Java-Themen 6
G outOfMemoryError beim Einlesen einer Datei abfangen? Allgemeine Java-Themen 13
flashfactor Komischer Fehler beim Einlesen einer Datei. Allgemeine Java-Themen 2
K .wav Datei einlesen Allgemeine Java-Themen 2
T Tastatureingabe in Datei einlesen Allgemeine Java-Themen 5
S Datei endlos einlesen (am Dateiende warten) Allgemeine Java-Themen 3
P Probleme beim Einlesen einer TXT/CSV-Datei aus einem JAR Allgemeine Java-Themen 7
M Datei in String einlesen Allgemeine Java-Themen 3
F NullpointerException beim Einlesen einer Datei Allgemeine Java-Themen 13
C Datei vollständig einlesen Allgemeine Java-Themen 3
D Bilder einlesen, bearbeiten und wieder in Datei schreiben Allgemeine Java-Themen 3
kodela StatusBar-Anzeigen auch in Log-Datei ausgeben Allgemeine Java-Themen 3
G Maven Projekt JAR-Datei Allgemeine Java-Themen 6
E XML - Datei Darstellung in IntelliJ als Baum Allgemeine Java-Themen 2
Thomasneuling Java Jar datei erstellen, von Projekt, dass auch Javafx Dateien, FXML Dateien und CSS Dateien, sowie Bilder enthält? Allgemeine Java-Themen 14
D Erste Schritte Mp3 Datei kann nicht von der Festplatte geöffnet werden - mit ChatGPT erstellt Allgemeine Java-Themen 7
J Filenotfoundexception obwohl Datei existiert Allgemeine Java-Themen 6
M Java Überprüfen ob .exe-Datei bereits ausgeführt wird Allgemeine Java-Themen 2
S .exe Datei/Programm auslesen? Allgemeine Java-Themen 2
E Datei verschoben Event Allgemeine Java-Themen 3
D Datei mit "Kohsuke GitHub API" in Repository hochladen Allgemeine Java-Themen 2
melaniemueller Einzelne Zeile aus einer txt Datei in einem String speichern Allgemeine Java-Themen 12
G JavaFX Maven Projekt als .exe Datei exportieren Allgemeine Java-Themen 10
J (Geplante) Änderungen an einer Datei vorübergehend speichern und anwenden? Allgemeine Java-Themen 12
Neumi5694 Datei komprimiert Allgemeine Java-Themen 6
_user_q Obfuscate einer .jar-Datei mit ProGuard? Allgemeine Java-Themen 2
_user_q Verknüpfung einer .jar-Datei (liegt z. B. auf dem Desktop) im Autostart-Ordner erstellen? Allgemeine Java-Themen 20
E java mithilfe url .jar datei öffnen Allgemeine Java-Themen 9

Ähnliche Java Themen

Neue Themen


Oben