Frage zu JDOM?

Maik20

Erfahrenes Mitglied
Hallo,

ich habe folgende Struktur in einem XML Dokument:

<title>Test</title>
<duration>1234</duration>
<artist id="abc">
<name>Lily Allen</name>
</artist>
<release-list>
<release id="1234">
<title>Hallo</title>
<track-list offset="1" count="12" />
</release>
</release-list>

Wenn ich folgendes mache:

Code:
List tracksList2 = tracks.getChildren();
for (int k=0;k<tracksList2.size();k++){
	Element p = (Element)tracksList2.get(k);
	if (p.getName().equalsIgnoreCase("title")){
		mbTrack = p.getName();
	}
	System.out.println(p.getName());
	System.out.println(p.getValue());
	System.out.println(p.getText());
}
wird mir der title "Test" angezeigt.

Wenn ich jedoch wie folgt vorgehe:

Code:
Element titel = tracks.getChild("title");
System.out.println(titel.getName());

Bekomme in in der Zeile "System.out.println(titel.getName());" eine NullPointerException. Wie komme ich ohne diese Schleifen direkt an den Eintrag für title?
 
Ich vermute, dass in dem nicht geposteten Teil der xml Datei Namespacedeklarationen drinn sind. In diesem Fall musst du getChild("elementName", namespace) verwenden.

Für folgendes Testdokument funktioniert dein Code:

<root>
<title>Test</title>
<duration>1234</duration>
<artist id="abc">
<name>Lily Allen</name>
</artist>
<release-list>
<release id="1234">
<title>Hallo</title>
<track-list offset="1" count="12" />
</release>
</release-list>
</root>

SAXBuilder builder = new SAXBuilder();
try {
Document build = builder.build(new File("test.xml"));
Element rootElement = build.getRootElement();
Element titel = rootElement.getChild("title");
System.out.println(titel.getName());
} catch (Exception e) {
e.printStackTrace();
}
 

Neue Beiträge

Zurück