#!/usr/bin/perl # 20140301 - After some effort to get it installed, do NOT like what it does # {"@encoding":"UTF-8","@version":"1.0", # "ProceduresDB":{"Airport": # {"Star":[ # {"@Name":"BSR2", # "Star_Waypoint":[ # {"Longitude":{"$t":"-121.642111"}, # "AltitudeCons":{"$t":"0"}, # "Latitude":{"$t":"36.181294"}, # *** UGLY RUBBISH *** # However the 2nd method found, namely load the XML using XML::Simple, and convert it using JSON::Any # worked FINE #use JSON::XS; use JSON::Any; use XML::XML2JSON; use XML::Simple; my $PATH_SEP = "\\"; my $temp_dir = 'C:\GTools\perl'; my $pgmname = $0; if ($pgmname =~ /(\\|\/)/) { my @tmpsp = split(/(\\|\/)/,$pgmname); $pgmname = $tmpsp[-1]; } my $out_file = $temp_dir.$PATH_SEP."tempxml2json.json"; my $out_file2 = $temp_dir.$PATH_SEP."tempxml2json2.json"; my $XML = ''; ##my $in_file = 'C:\Users\user\Downloads\LDS767\ZWWW.xml'; my $in_file = 'C:\Users\user\Downloads\LDS767\KSFO.xml'; my $XML2JSON = XML::XML2JSON->new(); my $JSON = $XML2JSON->convert($XML); print $JSON."\n"; # my $RestoredXML = $XML2JSON->json2xml($JSON); sub prt($) { print shift; } sub write2file { my ($txt,$fil) = @_; open WOF, ">$fil" or die("ERROR: Unable to open $fil! $!\n"); print WOF $txt; close WOF; } sub load_file() { if (! -f $in_file) { prt("Error: Can NOT locate file $in_file\n"); return; } if (! open INF, "<$in_file") { prt("Error: Can NOT open file $in_file\n"); return; } my @lines = ; close INF; my $line = join("",@lines); ### prt("$line\n"); my $X2J = XML::XML2JSON->new(); my $json = $X2J->convert($line); #prt("$json\n"); write2file($json,$out_file); prt("JSON written to [$out_file]\n"); } sub load_file2() { if (! -f $in_file) { prt("Error: Can NOT locate file $in_file\n"); return; } my $xml = XMLin($in_file); my $json = JSON::Any->new()->objToJson($xml); write2file($json,$out_file2); prt("JSON written to [$out_file2]\n"); } #load_file(); load_file2(); # eof