Почему атрибут SOAP XML не устанавливается? - PullRequest
2 голосов
/ 18 августа 2011

При создании SOAP с SOAP::Lite

#!/usr/bin/perl
use 5.006;
use strict;
use warnings;
use SOAP::Lite +trace => [ 'debug' ];

my $req1 = SOAP::Lite->new(
    readable => 1,
    autotype => 0,
    proxy    => 'https://ics2wstest.ic3.com/commerce/1.x/transactionProcessor',
);

# req1 does not generate the XML attribute <item id="0"> it just generates
# <item>
$req1->requestMessage(
    \SOAP::Data->new(
        name => 'item',
        attr => { id => '0' },
        value => \SOAP::Data->new(
            name => 'foo',
            value => 1,
        ),
     ),
);

я получаю этот XML (примечание: ну, это важная часть)

<item>
  <foo>1</foo>
</item>

Я не понимаю, почему я не получаю этот XML

<item id="0">
   <foo>1</foo>
</item>

Может кто-нибудь сказать мне, как получить атрибут для создания?

примечание: это близкоработает идентичный (вместо именования атрибута id он называется foo) код.так что я думаю, что это может быть ошибка

$req->requestMessage(
    \SOAP::Data->new(
        name => 'item',
        attr => { foo => '0' },
        value => \SOAP::Data->new(
            name => 'foo',
            value => 1,
        ),
     ),
);

Ответы [ 2 ]

2 голосов
/ 18 августа 2011

обновление: Исправлено в 0,714

Это противоречит чему-то, что SOAP :: Lite или SOAP использует

sub xmlize {
    my $self = shift;
    my($name, $attrs, $values, $id) = @{+shift};
    $attrs ||= {};

    local $self->{_level} = $self->{_level} + 1;
    return $self->tag($name, $attrs)
        unless defined $values;
    return $self->tag($name, $attrs, $values)
        unless UNIVERSAL::isa($values => 'ARRAY');
    return $self->tag($name, {%$attrs, href => '#'.$self->multiref_anchor($id)})
        if $self->is_href($id, delete($attrs->{_id}));
    return $self->tag($name,
        {
            %$attrs, id => $self->multiref_anchor($id)      <-------- Clobbers your id
        },
        map {$self->xmlize($_)} @$values
    );
}

Я думаю, что именно здесьВаш идентификатор теряется.И был ли раздел кода изменен в 0,714

0 голосов
/ 18 августа 2011

Можете ли вы попробовать поместить цитаты вокруг id?Может быть, это сработает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...