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?- 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" - 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...- 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" - 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 |
|
|
|
|