1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
|
# $Id$
#
# Test of XML::Simple as a tool for encoding and decoding
#
# http://mirin.apnic.net/resourcecerts/wiki/index.php/IR-ISP_Definition
eval 'exec perl -w -S $0 ${1+"$@"}'
if 0;
use strict;
use XML::Simple;
use Data::Dumper;
my @xml = ('
<message version="1">
<header sender="sender name"
recipient = "recipient name"
msg_ref="reference" />
<resource_class_list_query ca="ca_name" />
</message>
','
<message version="1">
<header sender="sender name"
recipient = "recipient name"
msg_ref="reference" />
<list_class ca="ca_name"
cert_url="url"
cert_ski="g(ski)"
cert_serial="serial"
cert_aki="g(aki)"
status="keyword" />
<list_class ca="ca_name"
cert_url="url"
cert_ski="g(ski)"
cert_serial="serial"
cert_aki="g(aki)"
status="keyword" />
<!-- [repeated for each active class where the ISP has resources] -->
</message>
','
<message version="1">
<header sender="sender name"
recipient = "recipient name"
msg_ref="reference" />
<issue_request_class ca="ca_name"
subca="subca_ident">
[Certificate request]
</issue_request_class>
</message>
','
<message version="1">
<header sender="sender name"
recipient = "recipient name"
msg_ref="reference" />
<certificate ca="ca_name"
subca="subca_ident"
cert_url="url"
cert_ski="g(ski)"
cert_serial="serial"
cert_aki="g(aki)">
[certificate]
</certificate>
</message>
','
<message version="1">
<header sender="sender name"
recipient = "recipient name"
msg_ref="reference" />
<revoke_request_class ca="ca_name"
cert_ski="g(ski)" />
</message>
','
<message version="1">
<header sender="sender name"
recipient = "recipient name"
msg_ref="reference" />
<revoke_response_class ca="ca_name"
cert_ski="g(ski)" />
</message>
','
<message version="1">
<header sender="sender name"
recipient = "recipient name"
msg_ref="reference" />
<status code="reason code">
[Readable text]
</status>
</message>
');
my $xs = XML::Simple->new(KeepRoot => 1, Forcearray => [qw(list_class)]);
for my $xml (@xml) {
my $x = $xs->XMLin($xml);
my $t = $xs->XMLout($x);
print("\n###\n", $xml, "\n", Dumper($x), "\n", $t);
}
|