# Problem beim erstellen eines neuen Elements (JDOM)



## Paladin (12. Sep 2005)

Hi,

ich bin gerade dabei eine xml Datei in mein Java-Programm einzulesen aber es gelingt mir nicht ein Element von dem header(ehd:header) zu erzeugen.
Nachfolgend ein kurzer Ausschnitt aus der xml Datei aus der ich die Daten auslesen will:


```
<?xml version="1.0" encoding="ISO-8859-1"?>
<ehd:ehd xmlns:ehd="urn:ehd/001" ehd_version="1.20" xmlns="urn:ehd/go/001" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:ehd/001 M:\Projekte\ebm2k\Validate\XPM_GOS\Schema\go_root.xsd">
	<ehd:header>
		<ehd:id EX="E7F454A3-0F6E-460e-A495-D7D514329DC3" RT="03"/>
		<ehd:version_nbr V="1"/>
		<ehd:document_type_cd V="851"/>
		<ehd:service_tmr V="2005-10-01..2005-12-31"/>
		<ehd:origination_dttm V="2005-08-22"/>
		<ehd:provider>
			<ehd:provider.type_cd V="03" S="1.3.5.T.e.s.t" SV="1.0"/>
		</ehd:provider>
		<ehd:interface>
			<ehd:id EX="SDEBM2000plus" RT="GO_ID" RTV="1.0"/>
			<ehd:interface.nm V="Gebührenordnungsstammdatei / Satzart 850"/>
			<ehd:version V="01.12"/>
		</ehd:interface>
	</ehd:header>
...
```

Mit dem folgenden Java Code versuche ich gerade ein Element des headers zu erstellen:


```
...
		SAXBuilder builder = new SAXBuilder();
		Document doc = builder.build("851_01.12_03_tf2005q4_nr1.xml");
		Element root = doc.getRootElement();			
		System.out.println(root.getChildren());		
		Element header = root.getChild("header");		
		System.out.println("header = " + header);
                ...
```

Wenn ich diesen Code ausführe bekomme ich vom Compiler folgendes zurück:


```
[[Element: <ehd:header [Namespace: urn:ehd/001]/>], [Element: <ehd:body [Namespace: urn:ehd/001]/>]]
header = null
```

Es ist vollkommen egal ob ich root.getChild("header") oder root.getChild("ehd:header") schreibe. Das Ergebnis ist das gleiche. Was für einen Fehler mache ich beim einlesen?

Vielen Dank im voraus

Gruß

Paladin


----------



## Bleiglanz (12. Sep 2005)

und was willst du?

ist doch alles in Butter (toString() vom Element aufgerufen??)


----------



## byte (12. Sep 2005)

Paladin hat gesagt.:
			
		

> Es ist vollkommen egal ob ich root.getChild("header") oder root.getChild("ehd:header") schreibe. Das Ergebnis ist das gleiche. Was für einen Fehler mache ich beim einlesen?



die frage beantwortet dir die jdom api:



> public Element getChild(java.lang.String name)
> 
> This returns the first child element within this element with the given local name and *belonging to no namespace*. If no elements exist for the specified name and namespace, null is returned.




versuchs stattdessen so:



> public Element getChild(java.lang.String name,
> Namespace ns)
> 
> This returns the first child element within this element with the given local name and belonging to the given namespace. If no elements exist for the specified name and namespace, null is returned.


----------



## Paladin (12. Sep 2005)

Wenn ich jetzt versuche die childs von dem Element header auszugeben bekomme ich eine Null Pointer Exception.


```
System.out.println(header.getChildren());
```

Meldung vom Compiler:


```
java.lang.NullPointerException
	at Main.loadValues(Main.java:78)
	at Main.<init>(Main.java:30)
	at Main.main(Main.java:16)
Exception in thread "main"
```

Also offensichtlich hat die Zuweisung an das Element header nicht geklappt.


----------



## byte (12. Sep 2005)

s.o. http://www.jdom.org/docs/apidocs/index.html


----------



## Paladin (12. Sep 2005)

Jetzt funktioniert es.
Vielen dank an euch beide für die schnelle Hilfe (Ich saß nämlich jetzt schon ne weile an der Sache und war mittlerweile fast am verzweifeln.)

Gruß

Paladin


----------

