XML beautify using perl XML::Writer

There are code that we generate somehow having the whole data
merged into just ONE long line.

And end-user complained can’t be processed.
Which is not so easy to read.

unless you did some magic before viewing as follows :

xmllint --format IDM26004.xml |more

which did reformatting it.. into a human readable tab/indent.

However, later I found out the fix for generating script is quite easy.
Just need to add the following item.

 
  my $writer = new XML::Writer (
    OUTPUT => \$xml, DATA_MODE => 1,DATA_INDENT => 2
  );

which is decribed here :

DATA_MODE
 
    A true or false value; if this parameter is present and its value is true, then the module will enter a special data mode, inserting newlines automatically around elements and (unless UNSAFE is also specified) reporting an error if any element has both characters and elements as content.
DATA_INDENT
 
    A numeric value or white space; if this parameter is present, it represents the indent step for elements in data mode (it will be ignored when not in data mode). If it is white space it will be repeated for each level of indentation.

so the full look like follows..

# =====================================================================
# gen_xml () 
# ---------------------------------------------------------------------
 
sub gen_xml {
 
  my ($next_time) = @_;
  my @nowtime = localtime (time());
 
  syslog ("info", "Generating Tide XML");
 
  my $xml;
 
  my $writer = new XML::Writer (
    OUTPUT => \$xml, DATA_MODE => 1,DATA_INDENT => 2
  );
  $writer->xmlDecl();
  $writer->startTag ("tides");
  $writer->emptyTag ("timezone",
    'name' => 'MST', value=>'8.0'
  );
 
..

so result would as :

[[email protected] tmp]$ head IDM26004.xml 



  
  Saturday 22/01/11
  
    
      
      
      

References :

http://search.cpan.org/~josephw/XML-Writer-0.612/Writer.pm

Get Free Email Updates!

Signup now and receive an email once I publish new content.

I will never give away, trade or sell your email address. You can unsubscribe at any time.

Like

Related Post

8 Responses

  1. Lonnie says:

    HawkEye,
    I have followed your directions, but I get an error at the end start of the build: “ValueError: Could not find an installable distribution at ‘/data/iso/WinXP_SP2_EN.iso'”
    I have tried various ways to create a WinXP iso, your directions were the last I used. All other attempts also failed…Not sure what to try next. When I check the file, it seems to be OK…

    file /data/iso/WinXP_SP2_EN.iso
    /data/iso/WinXP_SP2_EN.iso: ISO 9660 CD-ROM filesystem data ‘VRMPOEM_EN ‘ (bootable)

    Any Ideas?

    Reply
    • HawkEYE says:

      Perhaps would verify the WinXP CD is actually not corrupted.. and if the CD-Drive is working fine..

      then .. check if the iso files actually accessible by the xen lib..

      else should check the xen lib is properly installed and also verify the current running kernel is xen enabled..

      then might be a reinstall the virtualization group would be the next thing to try ..

      btw: what host are u using ? .. my experience was based on CentOS 5.2 host.. so far it went smooth as above..

      Reply
  2. Lonnie says:

    I have built the iso several times, once from Windows CD burner app and twice with “dd” command like you showed…no reported issues…only assuming it is OK.

    How would I verify it is accessible by “xen lib”?
    How would I check to see if xen lib is properly installed?

    I am installing on IBM x345 dual Xeon 2.4GHz cpu with 4GB ram (single cores). I did the install of “Virtualization” group per some earlier notes I saw on the subject…I cannot do the “Fully Virtualized” install because the hardware I have doesn’t support it…so I did the Paravirtualized option.

    Any suggestions I could try tonight would be greatly appreciated.

    Reply
    • HawkEYE says:

      check the xen kernel by running this at terminal

      uname -a

      shall be ended with -xen at the end..

      mine is something like this..

      [[email protected] ~]# uname -a
      Linux fedora.namran.net 2.6.18-92.1.22.el5xen #1 SMP Tue Dec 16 13:08:49 EST 2008 i686 i686 i386 GNU/Linux

      and the file


      [[email protected] ~]# ll /data/iso/XP3_3282_V2_EN.iso
      -rwxr-xr-x 1 root root 670576640 Feb 21 00:07 /data/iso/XP3_3282_V2_EN.iso

      mine also a para-virtualization as unable to become utilize full-virtualization

      [[email protected] ~]# cat /proc/cpuinfo
      processor : 0
      vendor_id : GenuineIntel
      cpu family : 15
      model : 2
      model name : Intel(R) Pentium(R) 4 CPU 3.00GHz
      stepping : 9
      cpu MHz : 2992.718
      cache size : 512 KB
      fdiv_bug : no
      hlt_bug : no
      f00f_bug : no
      coma_bug : no
      fpu : yes
      fpu_exception : yes
      cpuid level : 2
      wp : yes
      flags : fpu tsc msr pae mce cx8 apic mtrr mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe up cid xtpr
      bogomips : 7487.18

      if all fail, shall consider to seek help from bugs.centos.org or forum http://www.centos.org/modules/newbb/viewforum.php?forum=37

      Reply
  3. Lonnie says:

    # uname -ra
    Linux homer 2.6.18-92.1.22.el5xen #1 SMP Tue Dec 16 13:08:49 EST 2008 i686 i686 i386 GNU/Linux

    # ls -l /data/iso/WinXP_SP2_EN.iso
    -rw-r–r– 1 root root 607559680 Mar 22 11:30 /data/iso/WinXP_SP2_EN.iso

    # cat /proc/cpuinfo
    processor : 0
    vendor_id : GenuineIntel
    cpu family : 15
    model : 2
    model name : Intel(R) XEON(TM) CPU 2.40GHz
    stepping : 4
    cpu MHz : 2672.992
    cache size : 512 KB
    fdiv_bug : no
    hlt_bug : no
    f00f_bug : no
    coma_bug : no
    fpu : yes
    fpu_exception : yes
    cpuid level : 2
    wp : yes
    flags : fpu tsc msr pae mce cx8 apic mtrr mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm
    bogomips : 6689.88

    processor : 1
    vendor_id : GenuineIntel
    cpu family : 15
    model : 2
    model name : Intel(R) XEON(TM) CPU 2.40GHz
    stepping : 4
    cpu MHz : 2672.992
    cache size : 512 KB
    fdiv_bug : no
    hlt_bug : no
    f00f_bug : no
    coma_bug : no
    fpu : yes
    fpu_exception : yes
    cpuid level : 2
    wp : yes
    flags : fpu tsc msr pae mce cx8 apic mtrr mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm up
    bogomips : 6689.88

    processor : 2
    vendor_id : GenuineIntel
    cpu family : 15
    model : 2
    model name : Intel(R) XEON(TM) CPU 2.40GHz
    stepping : 4
    cpu MHz : 2672.992
    cache size : 512 KB
    fdiv_bug : no
    hlt_bug : no
    f00f_bug : no
    coma_bug : no
    fpu : yes
    fpu_exception : yes
    cpuid level : 2
    wp : yes
    flags : fpu tsc msr pae mce cx8 apic mtrr mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm up
    bogomips : 6689.88

    processor : 3
    vendor_id : GenuineIntel
    cpu family : 15
    model : 2
    model name : Intel(R) XEON(TM) CPU 2.40GHz
    stepping : 4
    cpu MHz : 2672.992
    cache size : 512 KB
    fdiv_bug : no
    hlt_bug : no
    f00f_bug : no
    coma_bug : no
    fpu : yes
    fpu_exception : yes
    cpuid level : 2
    wp : yes
    flags : fpu tsc msr pae mce cx8 apic mtrr mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm up
    bogomips : 6689.88

    Reply
  4. automated forex robots says:

    How do you look for information for your blog content?

    Reply
  5. V Tweet US says:

    Thanks HawkEYE for guiding me how to install windows XP on XEN virtualization in CentOS 5. The way you have enplane it make pretty easy to do it.

    Reply
  6. http://www.lcplunderground.com says:

    Actually no matter if someone doesn’t understand after that its up to other visitors that they will help, so here it happens.

    Reply

Leave a Reply to SPIce Cancel reply

X