#!/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".$HTML; $HTML .= "
\n"; print $HTML;