[XML] Howto extract data from soap to xml

Pagina: 1
Acties:

  • mabarto
  • Registratie: Februari 2001
  • Laatst online: 26-04 19:14
Indien ik een aanroep doe met behulp van de
webservice.htc van microsoft naar mijn webservice krijg ik een soap bericht terug, zie hieronder voor voorbeeld.

===
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <soap:Body>
    <GetAccountResponse xmlns="http://www.xmlforasp.net">
    <GetAccountResult>
      <AccountID>124837</AccountID>
      <AccountName>Wahlin Consulting<AccountName>
      <AccountContact>Dan Wahlin</AccountContact>
      <AccountPhone>123-123-1234</AccountPhone>
    </GetAccountResult>
    </GetAccountResponse>
  </soap:Body>
</soap:Envelope>

===

Nu wil ik over dit resultaat een xsl over heen laten gaan maar dan moet ik overal die extra </soap> atrributen voor gaan gebruiken om eigenlijk in dit voorbeeld in die account gegevens te komen.

Eigenlijk wil je het volgende bericht genereren zonder die soap attributen en die getaccountresponse en getaccountresult.

===
code:
1
2
3
4
5
6
7
<?xml version="1.0" encoding="utf-8"?>
 <Accounts> 
   <AccountID>124837</AccountID>
   <AccountName>Wahlin Consulting<AccountName>
   <AccountContact>Dan Wahlin</AccountContact>
   <AccountPhone>123-123-1234</AccountPhone>
 </Accounts>

===

Wie weet hoe je dit kan bewerkstelligen om het voorelkaar te krijgen die attributen eruit te halen.

Bedankt alvast voor jullie commentaar.

[UPDATED]
Eigenlijk zou je hetzelfde resultaat willen als dat je een HTTP GET of POST doet naar deze webservice zonder deze attributen.

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Yummie he? die SOAP berichten :+ .

Dat is gewoon een vrij eenvoudige transformatie, alhoewel de verbositeit van SOAP veel XSLT plezier kan verstoren. Waarom zie je hier een probleem in?

Je kunt echter nog veel beter een goede SOAP lib gebruiken. Je moet eigenlijk ook rekening houden met foutmeldingen en kleine afwijkingen in het formaat. Dat kan je allemaal zelf gaan uitprogrammeren, maar dat is veel werk. Een SOAP library kan dit allemaal netjes voor je opknappen. Je geeft niet aan vanuit welke taal/platform je de service aanspreekt, maar tegenwoordig heeft toch wel elk zichzelf respecterend platform een redelijke SOAP lirary die je zou kunnen toepassen.

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • mabarto
  • Registratie: Februari 2001
  • Laatst online: 26-04 19:14
Op maandag 15 juli 2002 12:55 schreef mbravenboer het volgende:
Yummie he? die SOAP berichten :+ .

Dat is gewoon een vrij eenvoudige transformatie, alhoewel de verbositeit van SOAP veel XSLT plezier kan verstoren. Waarom zie je hier een probleem in?
Omdat ik in principe deze informatie die in de soap staat niet als relevante informatie ziet om deze in mijn XSLT te plaatsen.
Je kunt echter nog veel beter een goede SOAP lib gebruiken. Je moet eigenlijk ook rekening houden met foutmeldingen en kleine afwijkingen in het formaat. Dat kan je allemaal zelf gaan uitprogrammeren, maar dat is veel werk. Een SOAP library kan dit allemaal netjes voor je opknappen. Je geeft niet aan vanuit welke taal/platform je de service aanspreekt, maar tegenwoordig heeft toch wel elk zichzelf respecterend platform een redelijke SOAP lirary die je zou kunnen toepassen.
Ik gebruik voor javascript de "webservice.htc" van microsoft om een bericht te sturen hiernaartoe in SOAP. Daarna krijg ik een SOAP response terug en wil eigenlijk de attributen hiervan uit filteren.

Dit wil ik dan door een XSL heen parsen en wil niet die SOAP attributen extra willen opgeven in de XSLT om de eigenlijk attributen te achterhalen.

Via een GET of POST heb je hier verder geen last van want daar staan deze attributen verder niet.

Weet je toevallig ook wat het voordeel is van SOAP ten opzichte van een HTTP GET of POST naar een webservice?

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
barto018: Omdat ik in principe deze informatie die in de soap staat niet als relevante informatie ziet om deze in mijn XSLT te plaatsen.
Tja, het lijkt hier inderdaad zinloze informatie, maar als er een fout optreedt, of bijvoorbeeld met transacties aan de slag gaat heb je opeens de omringende toestand nodig.
Ik gebruik voor javascript de "webservice.htc" van microsoft om een bericht te sturen hiernaartoe in SOAP. Daarna krijg ik een SOAP response terug en wil eigenlijk de attributen hiervan uit filteren.
Hum..... ik sprak over 'zichzelf respecterend platform'. Ik denk niet dat Javascript hieronder valt ;) . Er zullen vast geen SOAP libraries voor javascript zijn die een mapping kunnen verzorgen van SOAP envelopes naar Javascript klassen/whatever.
Via een GET of POST heb je hier verder geen last van want daar staan deze attributen verder niet.
Hum.... Ik denk niet dat dat klopt: toevallig ben ik veel met SOAP in .NET bezig, maar de SOAP envelopes maken juist onderdeel uit van een HTTP response. Misschien bedoel je iets anders of begrijp ik je verkeerd?
Weet je toevallig ook wat het voordeel is van SOAP ten opzichte van een HTTP GET of POST naar een webservice?
HTTP wordt als transport medium gebruikt voor SOAP messages (SOAP is transport onafhankelijk, dus kunnen ook andere tranport systemen mogelijk zijn). Het is dus geen kwestie van kiezen tussen HTTP of SOAP.

Ik denk dat je de zaak gewoon even moet afhandelen in je transformatie. Zoveel werk is dat niet :) .

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • tomato
  • Registratie: November 1999
  • Niet online
mbravenboer: Er zullen vast geen SOAP libraries voor javascript zijn die een mapping kunnen verzorgen van SOAP envelopes naar Javascript klassen/whatever.
Ik weet toevallig dat ze er wel zijn voor XML-RPC :7

Je zou hier even kunnen kijken of er iets bij staat (maar het zal wel browser-specifiek worden).

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
tomato: Ik weet toevallig dat ze er wel zijn voor XML-RPC :7
Het logische gevolg van het KISS principe ;) .

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • mabarto
  • Registratie: Februari 2001
  • Laatst online: 26-04 19:14
Op maandag 15 juli 2002 13:59 schreef mbravenboer het volgende:

Tja, het lijkt hier inderdaad zinloze informatie, maar als er een fout optreedt, of bijvoorbeeld met transacties aan de slag gaat heb je opeens de omringende toestand nodig.
Okay, duidelijk verhaal. Ik kan dit toch beter dan in mijn XSL opnemen.
Hum..... ik sprak over 'zichzelf respecterend platform'. Ik denk niet dat Javascript hieronder valt ;) . Er zullen vast geen SOAP libraries voor javascript zijn die een mapping kunnen verzorgen van SOAP envelopes naar Javascript klassen/whatever.
Nee klopt, ik programmeer die webservice met
C# van .NET. Verder verzorgt webservice.htc al de afhandeling van de soap berichten en hoe deze verstuurd worden naar de webservice. Tenzij je wat anders bedoelt?
Hum.... Ik denk niet dat dat klopt: toevallig ben ik veel met SOAP in .NET bezig, maar de SOAP envelopes maken juist onderdeel uit van een HTTP response. Misschien bedoel je iets anders of begrijp ik je verkeerd?
Als ik via bijv naar dit url verwijst:

[url="http://localhost/supplierService/supplierService.asmx/getSupplierInfo?supplierName=actebis"]http://localhost/supplierService/supplierService.asmx/getSupplierInfo?supplierName=actebis[/url]

krijg ik dus het resultaat terug in XML via een HTTP Response GET.
HTTP wordt als transport medium gebruikt voor SOAP messages (SOAP is transport onafhankelijk, dus kunnen ook andere tranport systemen mogelijk zijn). Het is dus geen kwestie van kiezen tussen HTTP of SOAP.

Ik denk dat je de zaak gewoon even moet afhandelen in je transformatie. Zoveel werk is dat niet :) .
Dus in mijn XSL afhandelen? Dus als ik het goed begrijp maakt het niet zo veel uit of ik nu een GET response doe of dit laat afhandelen via SOAP?
Pagina: 1