Thread [Dancer] Fehlermeldung beim Aufrufen einer Routine (10 answers)
Opened by modi at 2013-03-13 14:56

Gast modi
 2013-03-13 14:56
#166350 #166350
Hallo Forumsmitglieder,

ich bin absoluter Newcomer in Sachen Perl-Programmierung und soll in einem bestehenden "Werk" einen Fehler identifizieren und korrigieren. Ich hoffe, ihr könnt mir helfen. Es wird das Framework "dancer" verwendet. Wenn ich im der Weboberfläche den button betätige, bekomme ich folgenden Fehlermeldung:

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<html>
<head>
<title>Error 500</title>
<link rel="stylesheet" href="/css/error.css" />
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
</head>
<body>
<h1>Error 500</h1>
<div id="content">
[b]<h2>runtime error</h2><pre class="error">Warning caught during route execution: Element &#39;xml&#39; uses the reserved prefix &#39;XML&#39; (in any case) at /usr/local/share/perl/5.14.2/SOAP/Lite.pm line 1467.
[/b]</pre><div class="title">/usr/local/share/perl/5.14.2/SOAP/Lite.pm around line 1467</div><pre class="content"><span class="nu">1464</span> die &quot;Element &#39;$tag&#39; can&#39;t be allowed in valid XML message. Died.&quot;
<span class="nu">1465</span> if $tag !~ /^$SOAP::Constants::NSMASK$/o;
<span class="nu">1466</span>
<span class="nu">1467</span> <span style="color: red;"> warn &quot;Element &#39;$tag&#39; uses the reserved prefix &#39;XML&#39; (in any case)&quot;</span>
<span class="nu">1468</span> if $tag !~ /^(?![Xx][Mm][Ll])/;
<span class="nu">1469</span>
<span class="nu">1470</span> my $prolog = $readable ? &quot;\n&quot; : &quot;&quot;;
</pre><div class="title">Stack</div><pre class="content">main in bin/app.pl l. 4
Dancer in /usr/share/perl5/Dancer.pm l. 462
Dancer::Handler in /usr/share/perl5/Dancer/Handler.pm l. 203
Dancer::Handler::Standalone in /usr/share/perl5/Dancer/Handler/Standalone.pm l. 36


der dazugehörige Code sollte sein (Line 1467 ist Fett markiert):

Code: (dl )
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
sub tag {
my ($self, $tag, $attrs, @values) = @_;

my $readable = $self->{ _readable };

my $value = join '', @values;
my $indent = $readable ? ' ' x (($self->{ _level }-1)*2) : '';

# check for special attribute
return "$indent$value" if exists $attrs->{_xml} && delete $attrs->{_xml};
die "Element '$tag' can't be allowed in valid XML message. Died."
if $tag !~ /^$SOAP::Constants::NSMASK$/o;

[b] warn "Element '$tag' uses the reserved prefix 'XML' (in any case)"
[/b] if $tag !~ /^(?![Xx][Mm][Ll])/;

my $prolog = $readable ? "\n" : "";
my $epilog = $readable ? "\n" : "";
my $tagjoiner = " ";
if ($self->{ _level } == 1) {
my $namespaces = $self->namespaces;
foreach (keys %$namespaces) {
$attrs->{SOAP::Utils::qualify(xmlns => $namespaces->{$_})} = $_
}
$prolog = qq!<?xml version="1.0" encoding="@{[$self->encoding]}"?>!
if defined $self->encoding;
$prolog .= "\n" if $readable;
$tagjoiner = " \n".(' ' x 4 ) if $readable;
}
my $tagattrs = join($tagjoiner, '',
map { sprintf '%s="%s"', $_, SOAP::Utils::encode_attribute($attrs->{$_}) }
grep { $_ && defined $attrs->{$_} && ($_ ne 'xsi:type' || $attrs->{$_} ne '') }
keys %$attrs);

if ($value gt '') {
return sprintf("$prolog$indent<%s%s>%s%s</%s>$epilog",$tag,$tagattrs,$value,($value =~ /^\s*</ ? $indent : ""),$tag);
}
else {
return sprintf("$prolog$indent<%s%s />$epilog$indent",$tag,$tagattrs);
}
}



Wie gesagt, ich hoffe, ihr könnt mir da helfen..

Beste Grüße,
Modi
Last edited: 2013-03-13 15:08:34 +0100 (CET)

View full thread [Dancer] Fehlermeldung beim Aufrufen einer Routine