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 'xml' uses the reserved prefix 'XML' (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 "Element '$tag' can't be allowed in valid XML message. Died."
<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 "Element '$tag' uses the reserved prefix 'XML' (in any case)"</span>
<span class="nu">1468</span> if $tag !~ /^(?![Xx][Mm][Ll])/;
<span class="nu">1469</span>
<span class="nu">1470</span> my $prolog = $readable ? "\n" : "";
</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
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);
}
}
Guest ModiMeine Glaskugel sagt mir nicht was das für eine Methode ist. Ist deine Glaskugel vielleicht informativer? ;)Es hat sich herausgestellt, dass scheinbar das Problem ist, dass eine genutzte Methode einen String erhält, welcher Daten in XML-Format enthält. Diese Daten enthalten Sonderzeichen, die aus Umlauten resultieren.
QuoteKann ich nicht beurteilen, da mir der Code der Methode (was immer auch du damit meinst) nicht bekannt ist und du keinen Code gepostet hast.Die Methode schmeißt die Fehlermeldung aufgrund der Sonderzeichen.
QuoteWie kann ich erraten wie die Daten vorliegen und wie sie verarbeitet werden.Wie kann ich diese Daten so bearbeiten, dass die Methode die Ursprünglichen Daten erhält - OHNE Sonderzeichen?
1
2
3
my $XY = $proxy->callMethod("GetSearchResult", @params)->{GetSearchResultResponse}->{GetSearchResultResult};
my @XY = $proxy->callMethod("GetTableDataFromXML", SOAP::Data->name(xml => $XY))->{GetTableDataFromXMLResponse}->{GetTableDataFromXMLResult};
$XY = "<![CDATA[ $XY ]]>";
1 2 3 4 5 6
use XML::Entities; use HTML::Entities; my %HTML::Entities::char2entity = %{ XML::Entities::Data::char2entity('all'); }; $XY = encode_entities($XY);
utf8::decode($XY)