[powershell][XML] dot notation variabele opbouwen uit twee.

Pagina: 1
Acties:

Vraag


  • PROnline
  • Registratie: Maart 2000
  • Laatst online: 08:50
Ik ben bezig met powershell en XMLen ik ben daar nog heel erg beginner in. Dus geduld en vergevingsgezindheid is geboden ;-)

Ik heb :
  • een aantal SOAP services.
  • Ik heb een XMLfile met daarin
  • [list=2]
  • server
  • wsdlUrl
  • timeout
  • xmlPost die gepost wordt richting de soap service met een invoke-webrequest
  • variable met locatie van itemcode in de xmlPost
  • variable met locatie van itemcode in de resultaat xml
  • [/list]
Aan het einde vergelijk ik de twee itemcodes of deze identiek zijn.
code:
1
return [bool]$xmlPostFile.Envelope.Body.article.item.itemCode -eq $result.Envelope.Body.order.itemCode)


Nu is voor elke SOAP de XML die gepost wordt en het resultaat weer anders zijn opgebouwd.
Dus ik probeer het deel achter $xmlPostFile en $result uit een variable halen. Deze heb ik al opgeslagen heb in de XML file. Deze kan ik inlezen naar een variable, net als de timeout, xmlPost en WSDLurl.

Maar het opbouwen van $xmlPost.(variabele) dat krijg ik niet werkend.
Hoe krijg ik de ene variable achter de andere geplakt, zodat deze samen een geheel vormen?

Het probleem zit 'm denk ik in het feit dat de DOT notatie geen string is, maar in mijn variabele wel.
Ik kom er niet meer uit. Misschien ligt het er ook aan dat het bijna vijf uur is ;-)

code:
1
2
3
$var="Envelope.Body.article.item.itemCode"
$xmlPost.(get-variable $var)     werkt niet
$xmlPost.Envelope.Body.article.item.itemCode werkt wel

het moet in dit geval dus enkel de itemcode terug geven uit de XML.

Alle reacties


  • Snake
  • Registratie: Juli 2005
  • Laatst online: 07-03-2024

Snake

Los Angeles, CA, USA

code:
1
([xml]$xmlPostFile).Envelope.Body.article.item.itemCode


Werkt dat?

Going for adventure, lots of sun and a convertible! | GMT-8


  • Killah_Priest
  • Registratie: Augustus 2001
  • Laatst online: 07:15
Niet helemaal een antwoord op je vraag, maar misschien heb je er iets aan : de ingebouwde cmdlet New-WebServiceProxy? Hiermee kun je namelijk communiceren met SOAP services zonder xml te hoeven parsen (adv de wsdl genereert deze cmdlet de benodigde types).

Acties:
  • 0 Henk 'm!

  • PROnline
  • Registratie: Maart 2000
  • Laatst online: 08:50
Stapje verder met het begrijpen van hoe het verwerkt wordt.
Wat nu werkt, maar niet practisch is:
code:
1
2
3
$var="Envelope.Body.article.item.itemCode"
$arr=$var -split '\.' 
$xmlPost.($arr[0]).($arr[1]).($arr[2]).($arr[3]).($arr[4]).($arr[5])


Het gaat dus niet goed met het lezen van de variabele $var. De "." wordt in $var niet gezien als dotation, maar als de tekstuele punt.
Wat ik hier doe is dus omzetten naar array zonder PUNT en dan elk item van de array oproepen met een echte . (object dotatie?) er tussen.

Zoek nu een weg om een array (of string) weer om te zetten naar een dotatie.