# JDOM erzeugt leere xmlns Attribute



## dirty-mg (21. Aug 2007)

Hallo,

ich erzeuge eine XML-Datei.

```
Element root = new Element("DatML-RAW-D");
        root.setNamespace(Namespace.getNamespace("http://www.destatis.de/schema/datml-raw/2.0/de"));
        root.setAttribute("version", "2.0");
        
        // Optionen hinzufügen
        Element optionen = new Element("optionen");
        // kennung=200 => Daten werden nach Eingangs- und Vorprüfung beim Berichtsempfänger verworfen
        Element test = new Element("test");
        test.setAttribute("kennung", "200");
        optionen.addContent(test);
        root.addContent(optionen);

        // Dokument speichern
        String outfile = "test.xml";
        Document doc = new Document(root);

        // Damit das XML-Dokument schoen formattiert wird holen wir uns ein Format
        Format format = Format.getPrettyFormat();
        // und setzen das encoding, da auch Umlaute vorkommen koennten.
        format.setEncoding("iso-8859-1");

        // Erzeugung eines XMLOutputters dem wir gleich unser Format mitgeben
        XMLOutputter out = new XMLOutputter(format);

        System.out.println(out.getFormat().getEncoding());
        FileWriter fw = new FileWriter(new File(outfile));
        out.output( doc,  fw);
```
Problem ist, das für das Element "optionen" ein Attribut "xmlns" mit leeren Inhalt erzeugt wird. Dieses leere "xmlns" Attribut wird nur bei Elementen erzeugt, die direkt am "root"-Element hängen.

```
<optionen xmlns="">
    <test kennung="200" />
</optionen>
```
Es sollte eher so aussehen:

```
<optionen>
    <test kennung="200" />
</optionen>
```
Wie kann man das realisieren???

Vielen Dank im Voraus
Marcus


----------



## dirty-mg (21. Aug 2007)

Hab die Lösung selbst gefunden:

```
Namespace ns = Namespace.getNamespace("http://www.destatis.de/schema/datml-raw/2.0/de");
```
und nun einfach jedes Element folgendermaßen erzeugen:

```
Element e = new Element("element123", ns);
```
Nun werden keine leeren xmlns Attribute mehr erzeugt.


----------



## Gichin (18. Jun 2008)

Ist das wirklich die einzige Möglichkeit? Oder gibt es noch eine andere variante? Für mich würde diese ein sehr große Änderung am code bedeuten... :bahnhof:


----------



## dirty-mg (19. Jun 2008)

keine ahnung, hast du das gleiche (selbe???) Problem?


----------



## Gast (28. Okt 2008)

Hi, für alle, die mit DOM4J arbeiten und das selbe Problem haben, da kann man das so umgehen:

Element child = root.addElement("element123","http://www.destatis.de/schema/datml-raw/2.0/de");

Wenn der angegebene Namespace mit dem des Parent-Elements übereinstimmt, wird das leere xmlns-Attribut ausgeblendet.


----------

