Skip to content
Andreas Rudolph edited this page May 14, 2017 · 19 revisions

How to use IS24-XML format

Reading XML in IS24-XML format

The class org.openestate.io.is24_xml.Is24XmlUtils provides a static createDocument() function to read XML data in IS24-XML format from a java.io.File, java.io.InputStream, java.lang.String or org.w3c.dom.Document into a org.openestate.io.is24_xml.Is24XmlDocument.

import java.io.File;
import javax.xml.bind.JAXBElement;
import org.apache.commons.lang3.StringUtils;
import org.openestate.io.is24_xml.Is24XmlDocument;
import org.openestate.io.is24_xml.Is24XmlUtils;
import org.openestate.io.is24_xml.xml.ImmobilieBaseTyp;
import org.openestate.io.is24_xml.xml.ImmobilienTransferTyp;
import org.openestate.io.is24_xml.xml.VirtuelleImmobilieBaseTyp;

public static void main( String[] args )
{
  if (args.length<1)
  {
    System.err.println( "No file was specified!" );
    System.exit( 1 );
  }

  // read file into a Is24XmlDocument
  Is24XmlDocument doc = Is24XmlUtils.createDocument( new File( args[0] ) );

  // convert Is24XmlDocument into a Java object
  ImmobilienTransferTyp transfer = doc.toObject();

  // now we can access the XML content through ordinary Java objects
  if (transfer.getAnbieter()!=null)
  {
    // process objects
    for (JAXBElement<? extends ImmobilieBaseTyp> i : transfer.getAnbieter().getImmobilie())
    {
      ImmobilieBaseTyp obj = i.getValue();

      // get object nr
      String objectNr = (!StringUtils.isBlank( obj.getAnbieterObjektID() ))?
        obj.getAnbieterObjektID().trim(): "???";

      // get object title
      String objectTitle = (!StringUtils.isBlank( obj.getUeberschrift()))?
        obj.getUeberschrift().trim(): "???";

      // print object informations to console
      System.out.println( "> found object '" + objectNr + "' "
        + "with title '" + objectTitle + "'" );
    }

    // process virtual objects
    for (JAXBElement<? extends VirtuelleImmobilieBaseTyp> i : transfer.getAnbieter().getVirtuelleImmobilie())
    {
      VirtuelleImmobilieBaseTyp obj = i.getValue();

      // get object nr
      String objectNr = (!StringUtils.isBlank( obj.getAnbieterObjektID() ))?
        obj.getAnbieterObjektID().trim(): "???";

      // get object title
      String objectTitle = (!StringUtils.isBlank( obj.getUeberschrift()))?
        obj.getUeberschrift().trim(): "???";

      // print object informations to console
      System.out.println( "> found virtual object '" + objectNr + "' "
        + "with title '" + objectTitle + "'" );
    }
  }
}

See a full example at Is24XmlReadingExample.java.

Accessing XML data in IS24-XML format

The class org.openestate.io.is24_xml.xml.ImmobilienTransferTyp is equivalent to a <IS24ImmobilienTransfer> root element in a IS24-XML document. For example the following code creates a IS24-XML document programmatically:

import java.net.MalformedURLException;
import java.net.URL;
import org.apache.commons.lang3.RandomStringUtils;
import org.apache.commons.lang3.RandomUtils;
import org.apache.commons.lang3.StringUtils;
import org.openestate.io.is24_xml.Is24XmlDocument;
import org.openestate.io.is24_xml.Is24XmlUtils;
import org.openestate.io.is24_xml.xml.AktionsTyp;
import org.openestate.io.is24_xml.xml.AusstattungsqualitaetsTyp;
import org.openestate.io.is24_xml.xml.BauphaseTyp;
import org.openestate.io.is24_xml.xml.EnergieausweistypTyp;
import org.openestate.io.is24_xml.xml.GenehmigungTyp;
import org.openestate.io.is24_xml.xml.HausKategorienTyp;
import org.openestate.io.is24_xml.xml.HausKauf;
import org.openestate.io.is24_xml.xml.HausMiete;
import org.openestate.io.is24_xml.xml.HeizungsartTyp;
import org.openestate.io.is24_xml.xml.ISOLaenderCodeTyp;
import org.openestate.io.is24_xml.xml.ImmobilieBaseTyp;
import org.openestate.io.is24_xml.xml.ImmobilienTransferTyp;
import org.openestate.io.is24_xml.xml.ImmobilienTransferTyp.Anbieter;
import org.openestate.io.is24_xml.xml.ObjektZustandTyp;
import org.openestate.io.is24_xml.xml.StatusTyp;
import org.openestate.io.is24_xml.xml.StellplatzKategorieTyp;
import org.openestate.io.is24_xml.xml.WaehrungTyp;

public static void main( String[] args )
{
  // create a ImmobilienTransferTyp object with some example data
  // this object corresponds to the <IS24ImmobilienTransfer> root element in XML
  ImmobilienTransferTyp transfer = Is24XmlUtils.getFactory().createImmobilienTransferTyp();
  transfer.setEmailBeiFehler( "[email protected]" );
  transfer.setErstellerSoftware( "OpenEstate-IO" );
  transfer.setErstellerSoftwareVersion( "1.2" );
  transfer.setAnbieter( createAnbieter() );

  // now make something useful with the object
}

protected static Anbieter createAnbieter()
{
  // create an example agency
  Anbieter anbieter = Is24XmlUtils.getFactory().createImmobilienTransferTypAnbieter();
  anbieter.setScoutKundenID( "123456" );

  // add some real estates to the agency
  anbieter.getImmobilie().add( createImmobilieHausKauf() );
  anbieter.getImmobilie().add( createImmobilieHausKauf() );
  anbieter.getImmobilie().add( createImmobilieHausMiete() );
  anbieter.getImmobilie().add( createImmobilieHausMiete() );

  return anbieter;
}

protected static HausKauf createImmobilieHausKauf()
{
  // create an example real estate
  HausKauf.Type obj = Is24XmlUtils.getFactory().createHausKaufType();
  initImmobilie( obj );

  obj.setAlsFerienwohnungGeeignet( RandomUtils.nextInt( 0, 2 )==1 );
  obj.setAnzahlBadezimmer( RandomUtils.nextLong( 1, 5 ) );
  obj.setAnzahlGaragenStellplaetze( RandomUtils.nextLong( 0, 3 ) );
  obj.setAnzahlSchlafzimmer( RandomUtils.nextLong( 1, 5 ) );
  obj.setAusstattungsqualitaet( AusstattungsqualitaetsTyp.LUXUS );
  obj.setBarrierefrei( RandomUtils.nextInt( 0, 2 )==1 );
  obj.setBaujahr( RandomUtils.nextLong( 1900, 2010 ) );
  obj.setBauphase( BauphaseTyp.HAUS_FERTIG_GESTELLT );
  obj.setDenkmalschutzobjekt( RandomUtils.nextInt( 0, 2 )==1 );
  obj.setEtagenzahl( RandomUtils.nextLong( 1, 10 ) );
  obj.setFreiAb( "notes about availability" );
  obj.setGaesteWC( RandomUtils.nextInt( 0, 2 )==1);
  obj.setGrundstuecksFlaeche( RandomUtils.nextDouble( 100, 1500 ) );
  obj.setHausKategorie( HausKategorienTyp.MEHRFAMILIENHAUS );
  obj.setHeizungsart( HeizungsartTyp.ETAGENHEIZUNG );
  obj.setJahrLetzteModernisierung( RandomUtils.nextLong( 1980, 2000 ) );
  obj.setKeller( RandomUtils.nextInt( 0, 2 )==1 );
  obj.setMitEinliegerwohnung( RandomUtils.nextInt( 0, 2 )==1 );
  obj.setNutzflaeche( RandomUtils.nextDouble( 100, 1000 ) );
  obj.setObjektzustand( ObjektZustandTyp.NEUWERTIG );
  obj.setParkplatz( StellplatzKategorieTyp.TIEFGARAGE );
  obj.setRollstuhlgerecht( RandomUtils.nextInt( 0, 2 )==1 );
  obj.setVermietet( RandomUtils.nextInt( 0, 2 )==1 );
  obj.setWohnflaeche( RandomUtils.nextDouble( 50, 500 ) );
  obj.setZimmer( RandomUtils.nextDouble( 1, 10 ) );

  obj.setBefeuerungsArt( Is24XmlUtils.getFactory().createBefeuerungsArtTyp() );
  obj.getBefeuerungsArt().setOel( Is24XmlUtils.getFactory().createBefeuerungsArtTypOel( Boolean.TRUE ) );
  obj.getBefeuerungsArt().setGas( Is24XmlUtils.getFactory().createBefeuerungsArtTypGas( Boolean.TRUE ) );

  obj.setEnergieausweis( Is24XmlUtils.getFactory().createEnergieausweisTyp() );
  obj.getEnergieausweis().setEnergieausweistyp( EnergieausweistypTyp.ENERGIEVERBRAUCHSKENNWERT );
  obj.getEnergieausweis().setEnergieverbrauchskennwert( RandomUtils.nextDouble( 50, 500 ) );
  obj.getEnergieausweis().setWarmwasserEnthalten( RandomUtils.nextInt( 0, 2 )==1 );

  obj.setKaufpreise( Is24XmlUtils.getFactory().createVermarktungWohnKaufTyp() );
  obj.getKaufpreise().setKaufpreis( RandomUtils.nextDouble( 100000, 9999999 ) );
  obj.getKaufpreise().setMieteinnahmenProMonat( RandomUtils.nextDouble( 5000, 50000 ) );
  obj.getKaufpreise().setStellplatzKaufpreis( RandomUtils.nextDouble( 1000, 10000 ) );
  obj.getKaufpreise().setWohngeld( RandomUtils.nextDouble( 500, 5000 ) );

  return Is24XmlUtils.getFactory().createHausKauf( obj );
}

protected static HausMiete createImmobilieHausMiete()
{
  // create an example real estate
  HausMiete.Type obj = Is24XmlUtils.getFactory().createHausMieteType();
  initImmobilie( obj );

  obj.setAnzahlBadezimmer( RandomUtils.nextLong( 1, 5 ) );
  obj.setAnzahlGaragenStellplaetze( RandomUtils.nextLong( 0, 3 ) );
  obj.setAnzahlSchlafzimmer( RandomUtils.nextLong( 1, 5 ) );
  obj.setAusstattungsqualitaet( AusstattungsqualitaetsTyp.GEHOBEN );
  obj.setBarrierefrei( RandomUtils.nextInt( 0, 2 )==1 );
  obj.setBaujahr( RandomUtils.nextLong( 1900, 2010 ) );
  obj.setBetreutesWohnen( RandomUtils.nextInt( 0, 2 )==1 );
  obj.setEinbaukueche( RandomUtils.nextInt( 0, 2 )==1);
  obj.setEtagenzahl( RandomUtils.nextLong( 1, 10 ) );
  obj.setFreiAb( "notes about availability" );
  obj.setGaesteWC( RandomUtils.nextInt( 0, 2 )==1);
  obj.setGrundstuecksFlaeche( RandomUtils.nextDouble( 100, 1500 ) );
  obj.setHausKategorie( HausKategorienTyp.EINFAMILIENHAUS );
  obj.setHaustiere( GenehmigungTyp.NACH_VEREINBARUNG );
  obj.setHeizungsart( HeizungsartTyp.ZENTRALHEIZUNG );
  obj.setJahrLetzteModernisierung( RandomUtils.nextLong( 1980, 2000 ) );
  obj.setKeller( RandomUtils.nextInt( 0, 2 )==1 );
  obj.setNutzflaeche( RandomUtils.nextDouble( 150, 500 ) );
  obj.setObjektzustand( ObjektZustandTyp.GEPFLEGT );
  obj.setParkplatz( StellplatzKategorieTyp.CARPORT );
  obj.setRollstuhlgerecht( RandomUtils.nextInt( 0, 2 )==1 );
  obj.setWohnflaeche( RandomUtils.nextDouble( 50, 300 ) );
  obj.setZimmer( RandomUtils.nextDouble( 1, 5 ) );

  obj.setBefeuerungsArt( Is24XmlUtils.getFactory().createBefeuerungsArtTyp() );
  obj.getBefeuerungsArt().setErdwaerme( Is24XmlUtils.getFactory().createBefeuerungsArtTypErdwaerme( Boolean.TRUE ) );
  obj.getBefeuerungsArt().setPelletheizung( Is24XmlUtils.getFactory().createBefeuerungsArtTypPelletheizung( Boolean.TRUE ) );

  obj.setEnergieausweis( Is24XmlUtils.getFactory().createEnergieausweisTyp() );
  obj.getEnergieausweis().setEnergieausweistyp( EnergieausweistypTyp.ENERGIEVERBRAUCHSKENNWERT );
  obj.getEnergieausweis().setEnergieverbrauchskennwert( RandomUtils.nextDouble( 50, 500 ) );
  obj.getEnergieausweis().setWarmwasserEnthalten( RandomUtils.nextInt( 0, 2 )==1 );

  obj.setMietpreise( Is24XmlUtils.getFactory().createVermarktungWohnMieteTyp() );
  obj.getMietpreise().setHeizkosten( RandomUtils.nextDouble( 100, 500 ) );
  obj.getMietpreise().setHeizkostenInWarmmieteEnthalten( RandomUtils.nextInt( 0, 2 )==1 );
  obj.getMietpreise().setKaltmiete( RandomUtils.nextDouble( 150, 1500 ) );
  obj.getMietpreise().setKaution( "notes about deposit" );
  obj.getMietpreise().setNebenkosten( RandomUtils.nextDouble( 50, 500 ) );
  obj.getMietpreise().setStellplatzMiete( RandomUtils.nextDouble( 50, 500 ) );
  obj.getMietpreise().setWarmmiete( RandomUtils.nextDouble( 250, 2500 ) );

  return Is24XmlUtils.getFactory().createHausMiete( obj );
}

protected static void initImmobilie( ImmobilieBaseTyp immobilie )
{
  immobilie.setAdressdruck( RandomUtils.nextInt( 0, 2 )==1 );
  immobilie.setAktiveGruppen( "active groups" );
  immobilie.setAnbieterObjektID( "123" );
  immobilie.setAusstattung( "notes about features" );
  immobilie.setGruppierungsID( RandomUtils.nextLong( 1, 9999 ) );
  immobilie.setImportmodus( AktionsTyp.AKTUALISIEREN );
  immobilie.setLage( "notes about location" );
  immobilie.setObjektbeschreibung( "notes about the property" );
  immobilie.setProvision( "commission" );
  immobilie.setProvisionshinweis( "notes about commission" );
  immobilie.setProvisionspflichtig( RandomUtils.nextInt( 0, 2 )==1 );
  immobilie.setScoutObjektID( 456L );
  immobilie.setSonstigeAngaben( "further notes" );
  immobilie.setStatusHP( StatusTyp.AKTIV );
  immobilie.setStatusIS24( StatusTyp.AKTIV );
  immobilie.setStatusVBM( StatusTyp.INAKTIV );
  immobilie.setUeberschrift( "title of the property" );
  immobilie.setWaehrung( WaehrungTyp.EUR );

  immobilie.setAdresse( Is24XmlUtils.getFactory().createImmobilienAdresseTyp() );
  immobilie.getAdresse().setHausnummer( "1" );
  immobilie.getAdresse().setInternationaleRegion( "Berlin" );
  immobilie.getAdresse().setLaenderkennzeichen( ISOLaenderCodeTyp.DEU );
  immobilie.getAdresse().setOrt( "Berlin" );
  immobilie.getAdresse().setPostleitzahl( "12345" );
  immobilie.getAdresse().setStrasse( "name of the street" );

  immobilie.setApiSuchfelder( Is24XmlUtils.getFactory().createImmobilieBaseTypApiSuchfelder( Is24XmlUtils.getFactory().createApiSuchfelderTyp() ) );
  immobilie.getApiSuchfelder().getValue().setApiSuchfeld1( Is24XmlUtils.getFactory().createApiSuchfelderTypApiSuchfeld1( "value1" ) );
  immobilie.getApiSuchfelder().getValue().setApiSuchfeld2( Is24XmlUtils.getFactory().createApiSuchfelderTypApiSuchfeld2( "value2" ) );
  immobilie.getApiSuchfelder().getValue().setApiSuchfeld3( Is24XmlUtils.getFactory().createApiSuchfelderTypApiSuchfeld3( "value3" ) );

  immobilie.setKontaktperson( Is24XmlUtils.getFactory().createKontaktAdresseTyp() );
  immobilie.getKontaktperson().setAnrede( "addressing" );
  immobilie.getKontaktperson().setEMail( "[email protected]" );
  immobilie.getKontaktperson().setHausnummer( "1" );
  immobilie.getKontaktperson().setLaenderkennzeichen( ISOLaenderCodeTyp.DEU );
  immobilie.getKontaktperson().setMobiltelefon( "030/123456" );
  immobilie.getKontaktperson().setNachname( "Mustermann" );
  immobilie.getKontaktperson().setOrt( "Berlin" );
  immobilie.getKontaktperson().setPostleitzahl( "13125" );
  immobilie.getKontaktperson().setStrasse( "name of the street" );
  immobilie.getKontaktperson().setTelefax( "030/123457" );
  immobilie.getKontaktperson().setTelefon( "030/123458" );
  immobilie.getKontaktperson().setVorname( "Max" );
  try
  {
    immobilie.getKontaktperson().setHomepage( new URL( "http://mywebsite.com" ) );
  }
  catch (MalformedURLException ex)
  {}

  immobilie.setManuelleGeoCodierung( Is24XmlUtils.getFactory().createManuellGeoCodingTyp() );
  immobilie.getManuelleGeoCodierung().setTermsRegion( "name of region" );
  immobilie.getManuelleGeoCodierung().setTermsStadt( "name of city" );
  immobilie.getManuelleGeoCodierung().setTermsStadtTeil( "name of district" );
}

See a full example at Is24XmlWritingExample.java.

Writing XML in IS24-XML format

After a org.openestate.io.is24_xml.xml.ImmobilienTransferTyp object was created, it can be converted into a org.openestate.io.is24_xml.Is24XmlDocument with the static newDocument() function.

The class org.openestate.io.is24_xml.Is24XmlDocument provides a toXml() function, that finally writes the contents of the ImmobilienTransferTyp object as XML into a java.io.File, java.io.OutputStream or java.io.Writer.

import java.io.File;
import org.openestate.io.is24_xml.Is24XmlDocument;
import org.openestate.io.is24_xml.xml.ImmobilienTransferTyp;

protected static void write( ImmobilienTransferTyp transfer, File file )
{
  try
  {
    Is24XmlDocument doc = Is24XmlDocument.newDocument( transfer );
    doc.toXml( file );
  }
  catch (Exception ex)
  {
    System.err.println( "Can't write document into a file!" );
    System.err.println( "> " + ex.getLocalizedMessage(), ex );
    System.exit( 1 );
  }
}

See a full example at Is24XmlWritingExample.java.

Clone this wiki locally