Transformation vom XML zu XML

oraclin25

Erfahrenes Mitglied
#1
Hallo zusammen,

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

Code:
<?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>
Ein gültiges XML-Dokument zu dem obigen Schema sieht beispielsweise so aus:
Code:
<?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>
Ich kriege nun 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:

Code:
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 beliebige XML-File mit der Klasse, und schreibe dann die Objekte daraus in das "richtige" XML-File. 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.

Viele Grüße aus Rheinland,

Eure Ratna