#!/usr/bin/perl -w
# --
# xml2html.pl - a "_simple_" xml2html viewer
# Copyright (C) 2001-2007 OTRS GmbH, http://otrs.org/
# --
# $Id: xml2html.pl,v 1.9 2007/02/06 19:30:26 martin Exp $
# --
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
# --
# use ../../ as lib location
use FindBin qw($Bin);
use lib "$Bin/../..";
use lib "$Bin/../../Kernel/cpan-lib";
use strict;
use Kernel::Config;
use Kernel::System::Log;
use Kernel::System::Main;
use Kernel::System::Time;
use Kernel::System::DB;
use Kernel::System::XML;
my $ConfigObject = Kernel::Config->new();
my $LogObject = Kernel::System::Log->new(
ConfigObject => $ConfigObject,
);
my $MainObject = Kernel::System::Main->new(
ConfigObject => $ConfigObject,
LogObject => $LogObject,
);
my $DBObject = Kernel::System::DB->new(
MainObject => $MainObject,
ConfigObject => $ConfigObject,
LogObject => $LogObject,
);
my $XMLObject = Kernel::System::XML->new(
MainObject => $MainObject,
ConfigObject => $ConfigObject,
LogObject => $LogObject,
DBObject => $DBObject,
);
my $Title = 'xml2html: ';
my $HTML = '';
my $Layer = -1;
my $File = shift;
my $FileContent = '';
if ($File) {
open(IN, "< $File") || die "Can't open file $File: $!";
while () {
$FileContent .= $_;
}
close (IN);
}
else {
my @File = ;
foreach (@File) {
$FileContent .= $_;
}
}
my @XMLARRAY = $XMLObject->XMLParse(String => $FileContent);
foreach my $Tag (@XMLARRAY) {
if ($Tag->{TagType} eq 'Start') {
$Layer++;
if ($Layer == 0) {
$Title .= $Tag->{Tag};
}
$HTML .= "";
$HTML .= "
\n";
$HTML .= "$Tag->{Tag}:";
$HTML .= " ";
my $AttrList = '';
foreach (sort keys %{$Tag}) {
if ($_ =~ /^(Tag|TagType|Content)$/) {
next;
}
if ($AttrList) {
$AttrList .= ", ";
}
$AttrList .= "$_: $Tag->{$_}";
}
if ($AttrList) {
$AttrList = "(".$AttrList.")";
}
$HTML .= "$AttrList";
$HTML .= "
";
$HTML .= "\n";
if ($Tag->{Content} !~ /^\W+$/) {
$Tag->{Content} =~ s/(.{100}.+?\s)/$1\n/g;
$Tag->{Content} =~ s/ / /g;
my @Data = split(/\n/, $Tag->{Content});
foreach (@Data) {
$HTML .= Content($_);
}
}
}
elsif ($Tag->{TagType} eq 'End') {
$Layer = $Layer - 1;
}
}
sub Content {
my $C = shift;
return "$C
\n";
}
$HTML = "$Title\n";
print $HTML;