Twoje PC  
Zarejestruj się na Twoje PC
TwojePC.pl | PC | Komputery, nowe technologie, recenzje, testy
B O A R D
   » Board
 » Zadaj pytanie
 » Archiwum
 » Szukaj
 » Stylizacja

 
M E N U
  0
 » Nowości
0
 » Archiwum
0
 » Recenzje / Testy
0
 » Board
0
 » Rejestracja
0
0
 
Szukaj @ TwojePC
 

w Newsach i na Boardzie
 
OBECNI NA TPC
 
 » DJopek 18:39
 » Kenny 18:36
 » MARtiuS 18:30
 » muerte 18:28
 » @GUTEK@ 18:25
 » NWN 18:24
 » rurecznik 18:24
 » Sherif 18:23
 » Paweł27 18:13
 » soyo 18:07
 » dugi 18:01
 » myszon 18:01
 » luckyluc 17:56
 » Artaa 17:53
 » Wedrowiec 17:46
 » sszpila 17:41
 » Brauni 17:40
 » RoBakk 17:34
 » Liu CAs 17:27
 » Ament 17:26

 Dzisiaj przeczytano
 41114 postów,
 wczoraj 25974

 Szybkie ładowanie
 jest:
włączone.

 
ccc
TwojePC.pl © 2001 - 2024
A R C H I W A L N A   W I A D O M O Ś Ć
    

Uzywa ktos SOAP::Lite? , ptoki 7/12/11 17:31
Bo sie chlastam z jednym problemem.
Kod wyglada tak:

$soap= SOAP::Lite
-> proxy('http://webserwis')
-> uri('')
-> doSelect(
SOAP::Data->name(where=> 'serial_number like \'costam%\''),
SOAP::Data->name(maxRows => '10'),
SOAP::Data->name("attributes" =>
\SOAP::Data->value(
SOAP::Data->name("string" => 'serial_number'),
SOAP::Data->name("string" => 'name')
)
));

if ($soap->fault) {
print $soap->faultcode, " ", $soap->faultstring, "\n";
}
print "-------------------------------------------\n";

if ( $soap->match('//Attributes')){
print "cos\n";
} else {
print "soc\n";
}


Zwracany jest taki xml:

<?xml version="1.0" encoding="UTF-8"?>
<UDSObjectList>
<UDSObject>
<Handle>nr:949CEB8F07B4AE4A8202CB2F614ED862</Handle>
<Attributes>
<Attribute DataType="2002">
<AttrName>serial_number</AttrName>
<AttrValue>costam1</AttrValue>
</Attribute>
<Attribute DataType="2002">
<AttrName>name</AttrName>
<AttrValue>ble1</AttrValue>
</Attribute>
</Attributes>
</UDSObject>
</UDSObjectList>

No i teraz:
print $soap->faultcode, " ", $soap->faultstring, "\n";
Dziala ok.
if ( $soap->match('//Attributes')){
print "cos\n";
} else {
print "soc\n";
}
Caly czas ewaluowane jest na false (wykonywane jest else).

Jak zrobie print $soap->result; to dostaje wydruk calego xml-a ale ref() twierdzi ze to HASH.

Robie proste testy z tutoriali i nie dzialaja.

A co mi potrzeba?
Ano to ze ten xml potrzebuje zamienic na tabelke i miec dostep do parek serial_number, name.
Chcialem to zrobic "normalnie" jakims iteratorem napisanym wlasnorecznie ale nie mam pewnosci ze ten XML zawsze bedzie taki elegancki.

Ma ktos pod reka dzialajacy przyklad takiego kodu?

  1. pochlastaj , Deus ex machine 7/12/11 18:16
    preg_match_all('[<AttrName>(.*?)</AttrName>\s<AttrValue>(.*?)</AttrValue>]is',$twojXML, $twojWynik);
    print_r( $twojWynik );

    "Uti non Abuti"

    1. perl. Nie php :) , ptoki 7/12/11 18:34
      Wychodzi mi ze wywolanie zwraca rezultat w formie jakiejs haszowanej tabelki haszy ale nie umiem sie do niej dobrac.

      Data::Dumper wypluwa co ma wypluc ale tez w dziwnej formie.
      Kurcze jakby mi brakowalo jednej malej stronki z wyjasnieniem. Guglam juz drugi dzien i dalej nie rozumiem...

      1. w prelu tez sa regexp , Deus ex machine 7/12/11 18:55
        ja proste XML regulkami robie bo sa szybsze i szybciej je napisac .)

        "Uti non Abuti"

        1. Dobra. Stawiam orzechy przeciw czemutam rzucisz ze nie bedzie prostsze niz to: , ptoki 8/12/11 19:29
          my $xml = XMLin($soap->result, ForceArray=>1);
          #print Dumper($xml);

          foreach my $ci (@{$xml->{UDSObject}}) {
          print $ci->{Attributes}->[0]->{Attribute}->[0]->{AttrValue}->[0]." ";
          print $ci->{Attributes}->[0]->{Attribute}->[1]->{AttrValue}->[0]."\n";
          }

          Pieknie mi tego xml-a rozgryza.

          A inicjalny problem byl w tym ze ten gooopi webserwis zwraca jeden rezultat. Rezultatem jest escapowany xml.
          Takie sending xml while sending xml.
          Chore ale dopiero wireshark mi wyjasnil sprawe.

          Tak wiec uczylem sie XML-a w perlu za pomoca jmetera i wiresharka.

          Kto to pobije? ;P

    
All rights reserved ® Copyright and Design 2001-2024, TwojePC.PL