# Transformation vom XML zu XML



## ratnalein (17. Jan 2014)

Hallo zusammen,

ich bekomme ein XML-File in einer beliebiger Struktur.  Dieses XML-File möchte ich in ein XML-File mit folgendem einfachen fest definierten XML-Schema:


```
<?xml version="1.0" encoding="ISO-8859-1"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
           xmlns="http://meinnamespace.meinefirma.de"
           targetNamespace="http://meinnamespace.meinefirma.de"
           elementFormDefault="qualified">
   <xs:element name="adressen">
   <xs:complexType>
      <xs:sequence>
         <xs:element name="adresse" minOccurs="0" maxOccurs="unbounded">
         <xs:complexType>
            <xs:sequence>
               <xs:element name="firma" minOccurs="0"> <xs:complexType /> </xs:element>
               <xs:element name="name"  type="xs:string" />
               <xs:choice>
                  <xs:element name="strasse"  type="xs:string" minOccurs="0" />
                  <xs:element name="postfach" type="xs:positiveInteger" minOccurs="0" />
               </xs:choice>
               <xs:element name="plz" type="xs:positiveInteger" minOccurs="0" />
               <xs:element name="ort" type="xs:string" minOccurs="0" />
            </xs:sequence>
            <xs:attribute name="datum" type="xs:date" />
         </xs:complexType>
         </xs:element>
      </xs:sequence>
   </xs:complexType>
   </xs:element>
</xs:schema>
```

Beispielsweise sieht ein XML-File nach der Transformation so aus:

```
<?xml version="1.0" encoding="ISO-8859-1"?>
<adressen xmlns="http://meinnamespace.meinefirma.de"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://meinnamespace.meinefirma.de AdrSchema.xsd">
<adresse datum="2009-11-11">
      <firma />
      <name>Ich AG</name>
      <postfach>4711</postfach>
   </adresse>
</adressen>
```

Wie gesagt, als Eingabe bekomme ich ein XML-File in einer BELIEBIGEN Struktur(es können auch völlig im Schema vorgegebene Elemente/Tags enthalten).  Ich würde gerne dieses beliebige XML-File in ein XML-File, konformiert nach dem obigen Schema.  Nicht vorhandene Tags werden einfach weggelassen.  

Nun stehen dazu einige Tutorials im Netz, aber alle um XML --> Java-Objekt oder umgekehrt.  Ich konnte leider kein Tutorial finden, wie ich XML --> XML programmiere.  Da bei Java ja alles Objekte ist, werde ich wohl nicht drum herum kommen, eine Klasse basierend auf dem obigen Schema zu schreiben:


```
import java.util.List;
import javax.xml.bind.annotation.*;

@XmlAccessorType(XmlAccessType.FIELD)
public class Adresse {

    private String firma;
    private String name;
    private String strasse;
    private String postfach;
    private String plz;
    private String ort;
    private date datum;

}
```

Meine Idee wäre: ich binde das Eingangs-XML-File mit der Klasse, erstelle ein Objekt von der Klasse, futtere den Objektvariablen mit den relevanten Tags.  Jetzt weiss ich aber nicht, wie ich die lediglich betroffenen Tags aus dem beliebigen XML-File rausfische.  

Hat jemand eine Idee, was dazu der Best-Practise ist?  Vielen Dank. 

PS.  Hinzu kommt die Schwierigkeit, dass das Schema ja geschachtelte Tags hat.

Viele Grüße aus Rheinland,

Eure Ratna


----------



## Barista (17. Feb 2014)

Transformation XML zu XML ist typischerweise eine Aufgabe für XSLT.
Aber da würde ich lieber Java machen.


----------



## grindelaner (19. Mai 2014)

Sehe ich genau so...


----------

