Verschachtelung gleichnamiger Elemente

RoHo

Mitglied
Hallo,

ich möchte in einer xml-Datei gleichnamige Elemente verschachteln, sowas wie:
[XML]
<document>
<element name = "element1">
<...>...</...>
<element name ="element2">
<...>...</...>
</element>
<element>
</document>
[/XML]

Wenn ich den <document>-Knoten nach <element> durchsuche, werden mir element1 und element2 angezeigt, wenn ich element1 nach <element> durchsuche findet er nix.

Ich benutze dazu DocumentBuilder/Factory zum Einlesen der Datei,
zum Suchen der Knoten:
Java:
NodeList nl = node.getElementsByTagName("...");
zum Auslesen des Wertes:
Java:
private static String getTextValue(Element elem, String s){
		String textVal = null;
		NodeList nl = elem.getElementsByTagName(s);
		if(nl != null && nl.getLength() > 0) {
			Element el = (Element)nl.item(0);
			textVal = el.getFirstChild().getNodeValue();
		}

		return textVal;
	}


Geht das irgendwie ohne größere Umstellungen? Ich benutze das erste Mal xml und kenne mich da nicht wirklich aus, bitte kein Fachchinesich.

Gruß RoHo
 
T

Tomate_Salat

Gast
Was würde gegen solch eine Struktur sprechen:
[xml]
<root>
<elements name="liste">
<element name="a">...</element>
</elements>

<!-- oder -->
<elementlist name="liste">
<element name="a">...</element>
</elementlist>
</root>
[/xml]
 

RoHo

Mitglied
naja, eigentlich war das ziel eine (theoretisch) unbegrenzte aber dynamische verschachtelungstiefe zu erreichen, also ein <element> hat kein unterelement, das nächste hat zwei unterelemente, das nächste einen usw.
ich wüsste im moment nicht wie sich das mit der liste umsetzen ließe

€: ich sehe die verschachtelung bei dir gerade nicht
 

RoHo

Mitglied
eine Möglichkeit wäre natürlich die elmente auf xml-Ebene gleichrangig zu behandeln und als Attribut eine Verschachtelungstiefe anzugeben, aber dann müsste ich den Programm-Code natürlich ändern und das da behandeln
zum Lesen des xml-Dokuments ist das auch nicht vorteilhafter, wenn noch jemand eine Idee hat bitte melden, sonst mache ich den Thread morgen zu

Gruß Ro
 

RoHo

Mitglied
Hallo,

da es leider keine weiteren Vorschläge gab, bin ich das PRoblem ein wenig umgangen, hier meine Idee (falls es jemanden interessiert)
Am Anfang der xml-Datei habe ich eine Tiefe stehen, wie hoch die maximale Verschachtelung ist, und in jedem Element steht die aktuelle Verschachtelungstiefe mit drin.
[XML]
<tiefe>2</tiefe>
<element name = "..." tiefe = 0>erstes elment</element>
<element name =",,," tiefe = 1>unterlement des elmentes ...</elment>[/XML]

usw...
Im Prgramm ein ein Array der Größe [tiefe] und dort dann jeweils das aktuelle oberlement reingeschrieben, bzw. ausgelesen...

Gruß Ro
 
S

Spacerat

Gast
Bin jetzt nicht ganz so firm in XML aber soweit ich weis, musst du in der Dokumenttypdefinition (dtd) bzw. Shema (xsd) angeben, dass ein Element auch Seinesgleichen beinhalten darf. Ganz ohne Dokumentbeschreibung aber sollte es so funktionieren, wie in deinem 1. Beispiel, allerdings ohne Leerzeichen bei "=". Also[XML]<document>
<element name="element1">
<...>...</...>
<element name="element2">
<...>...</...>
</element>
<element>
</document>[/XML]
 

mvitz

Top Contributor
Also bei mir funktioniert das. Wenn ich folgendes XML habe:
[XML]<?xml version="1.0" encoding="UTF-8" ?>
<document>
<element name="1">
<element name="1.1" />
<element name="1.2" />
</element>
<element name="2" />
<element name="3">
<element name="3.1" />
</element>
</document>[/XML]

Und ich rufe auf dem Element, das element name="1" representiert getElementsByTagName("element") auf, dann bekomme ich eine NodeList mit der Länge 2 zurück.

Man muss natürlich beachten, dass wenn man dasselbe auf dem document Element aufruft, dann bekommt man nicht 3 sondern 6 zurück!
 

RySa

Bekanntes Mitglied
also auf die schnelle würde mir die suche mit Hilfe von XPath einfallen. Da kannst du dann z.B nach "//element/element"...usw suchen und kriegst dann nur das letzte angegebene Element zurück. Wenn du aber nach "//element" suchst, wirst du (solltest zumindest, soweit ich mich erinnern kann) dann das Element und all dessen Unterelemente zurückbekommen. Kann sein dass ich dich ein wenig missverstanden habe und du was ganz anderes suchst, wollte es nur mal so vorschlagen, falls es doch helfen sollte :)

Ps. Die Syntax für das XPath kann von den von mir angegebenen Beispielen ein bisschen abweichen, es ist schon spät :p

Gruß
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Z json inkl. Array/Verschachtelung erstellen XML & JSON 2
L XML einlesen gleichnamige Elemente XML & JSON 5
J Parent- und Child-Elemente mit gleiche Namen, geht das ? XML & JSON 1
S XML - Bestehende Elemente ändern XML & JSON 1
C JAXB: XML-Elemente einlesen und als XML-Attribute ausgeben XML & JSON 7
D optionale Elemente mit defaultwerten werden in xml miterzeugt XML & JSON 2
A Elemente aus mehreren XML-Dateien zu einem zusammenfügen XML & JSON 5
G JAXB und verschachtelte Elemente? XML & JSON 6
J Anzahl der Elemente in einem XML-Dokument auslesen XML & JSON 7
F Hilfe beim bearbeiten von XML elemente XML & JSON 3
G Wieviele Elemente von TagName, ich brings nicht hin XML & JSON 5
G Leere Elemente verhindern XML & JSON 7
aze JaxB Elemente in LinkedHashSet werden nicht wiededergegeben XML & JSON 3
E XML Datei einlesen und Elemente in der Console ausgeben XML & JSON 6
D Tabs/Einrückungen der XML-Elemente gehen beim Schreiben verloren XML & JSON 5
Z XML auslesen, Elemente daraus entfernen und als neue XML zurückgeben XML & JSON 2
S JTree - Nur Elemente mit Attributen einfügen XML & JSON 2
T Elemente zählen mit JDOM in XML XML & JSON 7
G XML Parser Fehler, zwei gleiche kind-Elemente XML & JSON 7
F Elemente sortieren lassen XML & JSON 2
I Editor, der nur Elemente einfuegt, die nach xsd zulaessig XML & JSON 2
G xml einlesen und bestimmte Elemente an eine gui_Klasse überg XML & JSON 25
H Elemente eines Node auslesen XML & JSON 2
M XML Elemente mit JDOM durch Text ersetzen XML & JSON 2
P JDom nimmt keine Elemente an. XML & JSON 3
M Elemente mit Prefix via JDOM erstellen XML & JSON 6
J Jdom Elemente lesen XML & JSON 5
P zugriff auf gewuenschte elemente klapp nicht. XML & JSON 3
T Einfach nur die Elemente einer XML Datei auslesen :( XML & JSON 10
T Elemente aus XML-File löschen (JDom) XML & JSON 9
G Xml Elemente in eine Liste abspeichern! XML & JSON 2
G Elemente in XML XML & JSON 4
G brauche Tips, wie ich am besten auf Elemente zugreife XML & JSON 5
D Xml-Datei in JTree anzeigen und Elemente ausblenden XML & JSON 2
S JDOM Elemente suchen XML & JSON 2

Ähnliche Java Themen

Neue Themen


Oben