28 Aralık 2014 Pazar

Perl ile XML dosyasından verileri parse edip HTML dosyası oluşturan basit bir script

Merhaba,

Basit bix XML dosyasından verileri alıp HTML dosyası oluşturan bir perl scripti paylaşmak istiyorum.

Öncelikle XML dosyasını alttaki şekilde fooxml.xml dosyası olarak oluşturalım.


  <config logfiles="/var/log/foologs/" debugfile="/tmp/foo.dbg" misc="mytest">
    <server name="ankara" osname="unix" osversion="2.6.5.3">
       <ipaddress>
             <address>10.1.0.101</address>
             <address>10.1.1.102</address>
       </ipaddress>
       <macaddress>
             <address>10:54:E5:12:43:A4:E2:21</address>
             <address>10:54:E5:12:45:A4:A4:41</address>
       </macaddress>
    </server>
    <server name="istanbul" osname="linux" osversion="6.6.5.3">
       <ipaddress>
            <address>10.16.0.105</address>
            <address>10.16.1.106</address>
      </ipaddress>
      <macaddress>
            <address>10:54:E5:12:43:A4:B2:31</address>
            <address>10:54:E5:12:43:E4:6Y:65</address>
      </macaddress>
    </server>
  </config>


Yukarıda gösterile XML dosyasını parse edecek scriptimizi perl ile oluşturacağız. Dosya ismi fooxmlparser.pl ve içeriği alttaki gibi olsun.



#!/usr/bin/perl

###Gerekli XML kutuphaneleri
  use XML::Simple qw(:strict);
  use Data::Dumper;

###XML dosyasini parse edip ekrana bastiralim
  my $config = XMLin("C:\\Otomasyon\\PerlXMLparser\\fooxml.xml", KeyAttr => { server => 'name' }, ForceArray => [ 'server', 'address' ]);

  print "Parse Edilecek XML Ciktisi : \n\**********\n";
  print Dumper($config);
  print "\n*************\n";

  ###Config icinde tanimli degerleri almaniz gerekirse alttakileri kullanabilirsiniz.###
  #print $config->{logdir};
  #print "\n";
  #print $config->{debugfile};
  #print "\n";
  #print $config->{misc};

###HTML dosyasina yazacagimiz degiskenlere atama yapalim

  my $srvankara="ankara";
  my $srvankaraip1 = $config->{server}->{ankara}->{ipaddress}->{address}->[1];
  my $srvankaramac1 = $config->{server}->{ankara}->{macaddress}->{address}->[1];
  my $srvistanbul="istanbul";
  my $srvistanbulip1 = $config->{server}->{istanbul}->{ipaddress}->{address}->[1];
  my $srvistanbulmac1 = $config->{server}->{istanbul}->{macaddress}->{address}->[1];
 
###HTML dosyasina yazacagimiz degiskenleri ayrica ekrana bastiralim
  print "Server : ANKARA\n\n";
  print "IP Address 1: ";
  print $config->{server}->{ankara}->{ipaddress}->{address}->[1];
  print "\n\n";
  print "MAC Address 1: ";
  print $config->{server}->{ankara}->{macaddress}->{address}->[1];
  print "\n";

  print "Server : ISTANBUL\n\n";
  print "IP Address 1: ";
  print $config->{server}->{istanbul}->{ipaddress}->{address}->[1];
  print "\n\n";
  print "MAC Address 1: ";
  print $config->{server}->{istanbul}->{macaddress}->{address}->[1];
  print "\n\n\n";
 
###HTML dosya içeriğini oluşturalım
  print "HTML Ciktisi : \n\n";
  print "<html>\n\n<meta>\n<title>XML Ciktisi</title>\n</meta>\n\n<body>\n\n<table>";
  print "\n<tr><td>".$srvankara."</td></tr>";
  print "\n<tr><td>".$srvankaraip1."</td></tr>";
  print "\n<tr><td>".$srvankaramac1."</td></tr>";
  print "\n<tr><td>".$srvistanbul."</td></tr>";
  print "\n<tr><td>".$srvistanbulip1."</td></tr>";
  print "\n<tr><td>".$srvistanbulmac1."</td></tr>\n</table>\n\n</body>\n</html>";
 
 
 
 
 
 
 

Hiç yorum yok:

Yorum Gönder