Octgn2.pl

From wiki.perl.lt
Jump to: navigation, search
#!/usr/bin/perl

# (c)left Algirdas @ perl.lt
# parse octgn2 xml files f.e.: WoW_Tokens.xml and WoW_Tokens.xml.rels
# octgn2.pl v1.0 [2010.05.19]

use strict;
use XML::Simple;

my $xml = new XML::Simple;
my $data = $xml->XMLin("WoW_Tokens.xml");

print "Set Name: $data->{name}\n";
print "Set Id: $data->{id}\n";
print "Set gameId: $data->{gameId}\n";
print "Set gameVersion: $data->{gameVersion}\n";

foreach my $ca_name (keys (%{$data->{'cards'}->{'card'}})) {
	my $ca_id = "$data->{'cards'}->{'card'}->{$ca_name}->{id}";
	open(F,"<WoW_Tokens.xml.rels");
	my $ca_img;
	while (<F>) {
		$ca_id =~ s/\-//g;
		if (/Target=\"(.*)\"(.*)Id=\"(.*)$ca_id/) {
			$ca_img = $1;
		}
	}
	close(F);
	print "\nCard Name: $ca_name";
	print "\nCard Id  : $ca_id";
	print "\nCard Image : $ca_img\n";
	foreach my $ca_property (keys (%{$data->{'cards'}->{'card'}->{$ca_name}->{property}})) {
		my $ca_value = "$data->{'cards'}->{'card'}->{$ca_name}->{'property'}->{$ca_property}->{'value'}";
		if ($ca_value) {
			print "$ca_property = $ca_value\n";
		}
	}
}

## example output:
#Set Name: Tokens
#Set Id: 23227063-0d27-4396-b63f-340d0fa8b975
#Set gameId: d7e6fd4f-5252-4C4C-4A4A-a645c4d8e45f
#Set gameVersion: 0.0.1
#
#Card Name: Skywing
#Card Id  : 1fd22ab902fe44d3918c3b2c307c9eb0
#Card Image : /tokens/Tokens-34.jpg
#Rules = If Skywing has been in play since your last turn, it has +3 ATK/ +3 health and is an Arakkoa.
#Faction = Token
#ATK = 1
#Rarity = T
#Type = Token Ally
#Health = 1
#Card Number = Tokens - 34/41
#
#Card Name: Arena Gladiator
#Card Id  : 4b897e0d17134f4bb543091a2adce71c
#Card Image : /tokens/Tokens-2.jpg
#Faction = Token
#ATK = 1
#Rarity = T
#Type = Token Ally
#Health = 1
#Card Number = Tokens - 2/41
#
#...
Personal tools
Categories