How to persist GPX (XML) document to a file using Tango?

188 views Asked by At

My setting:

  • Compiler: DMD 1.056
  • Library: Tango 0.99.9
  • OS: Windows 7

What I have done so far:

I have managed to build via API a GPX file and know how to format it and display it on the console.


My code:

module SwathGen;

import 
  tango.io.Stdout,
  tango.text.xml.Document,
  tango.text.xml.DocPrinter;

void main(char[][] args)
{   
    auto gpxdoc = new Document!(char);

    gpxdoc.header;

    gpxdoc.tree 
        .element(null,"gpx")
      .attribute (null,"xmlns","http://www.topografix.com/GPX/1/1")
      .attribute (null,"version","1.1")
            .attribute (null,"creator","SwathGen")
      .attribute (null,"xmlns:xsi","http://www.w3.org/2001/XMLSchema-instance")
      .attribute (null,"xsi:schemaLocation","http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd http://www.topografix.com/GPX/gpx_style/0/2 http://www.topografix.com/GPX/gpx_style/0/2/gpx_style.xsd http://www.topografix.com/GPX/gpx_overlay/0/3 http://www.topografix.com/GPX/gpx_overlay/0/3/gpx_overlay.xsd")
  ;

  gpxdoc.elements
        .element (null,"metadata")
      .element(null,"name","JobDef.gpx")

      .parent
      .element(null,"desc","Spray Job")

      .parent
      .element(null,"author")
        .element (null,"name","izylay")

        .parent
        .element (null,"email")
          .attribute (null,"id","izylay")
          .attribute (null,"domain","ary.com")

        .parent

      .parent
      .element(null,"copyright")
        .attribute (null,"author","izylay")
        .element (null,"year","2011")

        .parent

      .parent
      .element(null,"time","2011-10-10T08:19:50Z")

      .parent
      .element(null,"keywords","ULM, J300, Aerial Spraying, Locust")

      .parent
            .element (null,"bounds")
        .attribute (null,"minlat","-18.85522622")
                .attribute (null,"minlon","47.37275913")
                .attribute (null,"maxlat","-18.82044444")
                .attribute (null,"maxlon","47.39838002")
    ;

    gpxdoc.elements     
        .element(null,"wpt")
      .attribute (null,"lat","-18.85522622")
      .attribute (null,"lon","47.39173757")

      .element (null,"name","A000")

      .parent
      .element (null,"sym","Waypoint")
  ;

    gpxdoc.elements     
        .element(null,"rte")
      .element (null,"name","Spray Job")
      //
      .parent
      .element(null,"rtept")
        .attribute (null,"lat","-18.85522610")
        .attribute (null,"lon","47.39838002")
        .element (null,"name","Entry point")
        .parent
        .element (null,"sym","Dot")
        .parent

      .parent
      .element(null,"rtept")
        .attribute (null,"lat","-18.85522525")
        .attribute (null,"lon","47.37275913")
        .element (null,"name","B000")
        .parent
        .element (null,"sym","Dot")
        .parent

      .parent
      .element(null,"rtept")
        .attribute (null,"lat","-18.85387012")
        .attribute (null,"lon","47.37275913")
        .element (null,"name","B001")
        .parent
        .element (null,"sym","Dot")
        .parent


      .parent
      .element(null,"rtept")
        .attribute (null,"lat","-18.85387109")
        .attribute (null,"lon","47.39173757")
        .element (null,"name","A001")
        .parent
        .element (null,"sym","Dot")
        .parent

      .parent
      .element(null,"rtept")
        .attribute (null,"lat","-18.85251596")
        .attribute (null,"lon","47.39173757")
        .element (null,"name","A002")
        .parent
        .element (null,"sym","Dot")
        .parent

      .parent
      .element(null,"rtept")
        .attribute (null,"lat","-18.85251499")
        .attribute (null,"lon","47.37275913")
        .element (null,"name","B002")
        .parent
        .element (null,"sym","Dot")
        .parent

      .parent
      .element(null,"rtept")
        .attribute (null,"lat","-18.85115986")
        .attribute (null,"lon","47.37275913")
        .element (null,"name","B003")
        .parent
        .element (null,"sym","Dot")
        .parent

      .parent
      .element(null,"rtept")
        .attribute (null,"lat","-18.85116082")
        .attribute (null,"lon","47.39173757")
        .element (null,"name","A003")
        .parent
        .element (null,"sym","Dot")
        .parent

      .parent
      .element(null,"rtept")
        .attribute (null,"lat","-18.84980569")
        .attribute (null,"lon","47.39173757")
        .element (null,"name","A004")
        .parent
        .element (null,"sym","Dot")
        .parent

      .parent
      .element(null,"rtept")
        .attribute (null,"lat","-18.84980472")
        .attribute (null,"lon","47.37275913")
        .element (null,"name","B004")
        .parent
        .element (null,"sym","Dot")
        .parent

      .parent
      .element(null,"rtept")
        .attribute (null,"lat","-18.84844959")
        .attribute (null,"lon","47.37275913")
        .element (null,"name","B005")
        .parent
        .element (null,"sym","Dot")
        .parent

      .parent
      .element(null,"rtept")
        .attribute (null,"lat","-18.84845056")
        .attribute (null,"lon","47.39173757")
        .element (null,"name","A005")
        .parent
        .element (null,"sym","Dot")
        .parent

      .parent
      .element(null,"rtept")
        .attribute (null,"lat","-18.84709543")
        .attribute (null,"lon","47.39173757")
        .element (null,"name","A006")
        .parent
        .element (null,"sym","Dot")
        .parent

      .parent
      .element(null,"rtept")
        .attribute (null,"lat","-18.84709446")
        .attribute (null,"lon","47.37275913")
        .element (null,"name","B006")
        .parent
        .element (null,"sym","Dot")
        .parent

      .parent
      .element(null,"rtept")
        .attribute (null,"lat","-18.84573933")
        .attribute (null,"lon","47.37275913")
        .element (null,"name","B007")
        .parent
        .element (null,"sym","Dot")
        .parent

      .parent
      .element(null,"rtept")
        .attribute (null,"lat","-18.84574029")
        .attribute (null,"lon","47.39173757")
        .element (null,"name","A007")
        .parent
        .element (null,"sym","Dot")
        .parent

      .parent
      .element(null,"rtept")
        .attribute (null,"lat","-18.84438516")
        .attribute (null,"lon","47.39173757")
        .element (null,"name","A008")
        .parent
        .element (null,"sym","Dot")
        .parent

      .parent
      .element(null,"rtept")
        .attribute (null,"lat","-18.84438419")
        .attribute (null,"lon","47.37275913")
        .element (null,"name","B008")
        .parent
        .element (null,"sym","Dot")
        .parent

      .parent
      .element(null,"rtept")
        .attribute (null,"lat","-18.84302906")
        .attribute (null,"lon","47.37275913")
        .element (null,"name","B009")
        .parent
        .element (null,"sym","Dot")
        .parent

      .parent
      .element(null,"rtept")
        .attribute (null,"lat","-18.84303003")
        .attribute (null,"lon","47.39173757")
        .element (null,"name","A009")
        .parent
        .element (null,"sym","Dot")
        .parent

      .parent
      .element(null,"rtept")
        .attribute (null,"lat","-18.84167489")
        .attribute (null,"lon","47.39173757")
        .element (null,"name","A010")
        .parent
        .element (null,"sym","Dot")
        .parent

      .parent
      .element(null,"rtept")
        .attribute (null,"lat","-18.84167393")
        .attribute (null,"lon","47.37275913")
        .element (null,"name","B010")
        .parent
        .element (null,"sym","Dot")
        .parent

      .parent
      .element(null,"rtept")
        .attribute (null,"lat","-18.84031879")
        .attribute (null,"lon","47.37275913")
        .element (null,"name","B011")
        .parent
        .element (null,"sym","Dot")
        .parent

      .parent
      .element(null,"rtept")
        .attribute (null,"lat","-18.84031976")
        .attribute (null,"lon","47.39173757")
        .element (null,"name","A011")
        .parent
        .element (null,"sym","Dot")
        .parent

      .parent
      .element(null,"rtept")
        .attribute (null,"lat","-18.83896463")
        .attribute (null,"lon","47.39173757")
        .element (null,"name","A012")
        .parent
        .element (null,"sym","Dot")
        .parent

      .parent
      .element(null,"rtept")
        .attribute (null,"lat","-18.83896366")
        .attribute (null,"lon","47.37275913")
        .element (null,"name","B012")
        .parent
        .element (null,"sym","Dot")
        .parent

      .parent
      .element(null,"rtept")
        .attribute (null,"lat","-18.83760852")
        .attribute (null,"lon","47.37275913")
        .element (null,"name","B013")
        .parent
        .element (null,"sym","Dot")
        .parent

      .parent
      .element(null,"rtept")
        .attribute (null,"lat","-18.83760949")
        .attribute (null,"lon","47.39173757")
        .element (null,"name","A013")
        .parent
        .element (null,"sym","Dot")
        .parent

      .parent
      .element(null,"rtept")
        .attribute (null,"lat","-18.83625436")
        .attribute (null,"lon","47.39173757")
        .element (null,"name","A014")
        .parent
        .element (null,"sym","Dot")
        .parent

      .parent
      .element(null,"rtept")
        .attribute (null,"lat","-18.83625339")
        .attribute (null,"lon","47.37275913")
        .element (null,"name","B014")
        .parent
        .element (null,"sym","Dot")
        .parent

      .parent
      .element(null,"rtept")
        .attribute (null,"lat","-18.83489825")
        .attribute (null,"lon","47.37275913")
        .element (null,"name","B015")
        .parent
        .element (null,"sym","Dot")
        .parent

      .parent
      .element(null,"rtept")
        .attribute (null,"lat","-18.83489922")
        .attribute (null,"lon","47.39173757")
        .element (null,"name","A015")
        .parent
        .element (null,"sym","Dot")
        .parent

      .parent
      .element(null,"rtept")
        .attribute (null,"lat","-18.83354409")
        .attribute (null,"lon","47.39173757")
        .element (null,"name","A016")
        .parent
        .element (null,"sym","Dot")
        .parent

      .parent
      .element(null,"rtept")
        .attribute (null,"lat","-18.83354312")
        .attribute (null,"lon","47.37275913")
        .element (null,"name","B016")
        .parent
        .element (null,"sym","Dot")
        .parent

      .parent
      .element(null,"rtept")
        .attribute (null,"lat","-18.83218798")
        .attribute (null,"lon","47.37275913")
        .element (null,"name","B017")
        .parent
        .element (null,"sym","Dot")
        .parent

      .parent
      .element(null,"rtept")
        .attribute (null,"lat","-18.83218895")
        .attribute (null,"lon","47.39173757")
        .element (null,"name","A017")
        .parent
        .element (null,"sym","Dot")
        .parent

      .parent
      .element(null,"rtept")
        .attribute (null,"lat","-18.83083382")
        .attribute (null,"lon","47.39173757")
        .element (null,"name","A018")
        .parent
        .element (null,"sym","Dot")
        .parent

      .parent
      .element(null,"rtept")
        .attribute (null,"lat","-18.83083285")
        .attribute (null,"lon","47.37275913")
        .element (null,"name","B018")
        .parent
        .element (null,"sym","Dot")
        .parent

      .parent
      .element(null,"rtept")
        .attribute (null,"lat","-18.82947771")
        .attribute (null,"lon","47.37275913")
        .element (null,"name","B019")
        .parent
        .element (null,"sym","Dot")
        .parent

      .parent
      .element(null,"rtept")
        .attribute (null,"lat","-18.82947868")
        .attribute (null,"lon","47.39173757")
        .element (null,"name","A019")
        .parent
        .element (null,"sym","Dot")
        .parent

      .parent
      .element(null,"rtept")
        .attribute (null,"lat","-18.82812355")
        .attribute (null,"lon","47.39173757")
        .element (null,"name","A020")
        .parent
        .element (null,"sym","Dot")
        .parent

      .parent
      .element(null,"rtept")
        .attribute (null,"lat","-18.82812258")
        .attribute (null,"lon","47.37275913")
        .element (null,"name","B020")
        .parent
        .element (null,"sym","Dot")
        .parent

      .parent
      .element(null,"rtept")
        .attribute (null,"lat","-18.82676744")
        .attribute (null,"lon","47.37275913")
        .element (null,"name","B021")
        .parent
        .element (null,"sym","Dot")
        .parent

      .parent
      .element(null,"rtept")
        .attribute (null,"lat","-18.82676841")
        .attribute (null,"lon","47.39173757")
        .element (null,"name","A021")
        .parent
        .element (null,"sym","Dot")
        .parent

      .parent
      .element(null,"rtept")
        .attribute (null,"lat","-18.82044444")
        .attribute (null,"lon","47.39173757")
        .element (null,"name","Exit point")
        .parent
        .element (null,"sym","Dot")
        .parent
    ;

    gpxdoc.elements     
        .element(null,"extensions") 
      .element(null,"polyline")
        .attribute(null,"xmlns","http://www.topografix.com/GPX/gpx_overlay/0/3")

        .element(null,"points")
          //
          .element(null,"pt")   
            .attribute (null,"lat","-18.85522622")
            .attribute (null,"lon","47.37275913")

          .parent
          .element(null,"pt")   
            .attribute (null,"lat","-18.85522622")
            .attribute (null,"lon","47.39838002")

          .parent
          .element(null,"pt")   
            .attribute (null,"lat","-18.82044444")
            .attribute (null,"lon","47.39838002")

          .parent
          .element(null,"pt")   
            .attribute (null,"lat","-18.82044444")
            .attribute (null,"lon","47.37275913")

          .parent
          .element(null,"pt")   
            .attribute (null,"lat","-18.85522622")
            .attribute (null,"lon","47.37275913")
          //
    ;
    auto print = new DocPrinter!(char);

    Stdout(print(gpxdoc)).newline;  
}

Question:

How to persist the GPX (XML) document to a file ?

1

There are 1 answers

2
ratchet freak On BEST ANSWER
auto to = new File ("copy.txt", File.WriteCreate);

to.write(print(gpxdoc));
to.close;

open file and write to it