fenris14
Goto Top

XML Parsing Powershell

Hallo,

bin gerade am verzweifeln mit Powershell. Nehme die nicht gern und habe eher selten damit zu tun. Für den Zweck wäre es jetzt aber komfortabler, bevor ich da wieder eine Verrenkung mit Linux machen muss.

Ich will eine XML parsen die auf einer URL hinterlegt ist. Nun hatte ich folgende Vorgehensweise aus Dr. Google herausgequetscht:

$connect = [xml](Invoke-WebRequest 'http://10.3.2.1/connect').content  
$connect.InnerXml

Damit bekomme ich den Inhalt ausgeworfen. Aber eben völlig unsortiert und ohne Hirachie.

Der Inhalt abgekürzt:

<ns:Serv>
<ProductInformation>
<InformationDate>2021-04-12T15:14:51.009Z</InformationDate>
<ProductTypeInformation>
<ProductType>Bla</ProductType>
<ProductTypeVersion>4.3</ProductTypeVersion>
...

Jetzt hieß es das man mit der Punkt-Notation auch direkt die Child Nodes abfragen kann. Also dann so hier:

$connect.ns:Serv.ProductInformation.ProductTypeInformation.ProductTypeVersion

Leider wird bei mir absolut nichts augegeben. Was mache ich falsch?

Gruß

Content-ID: 1627111551

Url: https://administrator.de/contentid/1627111551

Ausgedruckt am: 24.11.2024 um 17:11 Uhr

MrCount
MrCount 16.12.2021 um 17:06:03 Uhr
Goto Top
143611
143611 16.12.2021 um 17:07:43 Uhr
Goto Top
Moin

was gibt denn
$connect.DocumentElement
aus?
Ich vermute, dass "ns:Serv" eher "Serv" oder so lauten müsste. Den passenden Namen sollte das DocumentElement liefern...

Viel Erfolg!
Fenris14
Fenris14 16.12.2021 um 17:20:04 Uhr
Goto Top
Das ist Ausgabe von $connect.DocumentElement :

xmlns              : http://10.3.2.1/int/version/ProductInformation/v1.1
ns                 : http://10.3.2.1/conn/ServiceDirectory/v3.1
ns1                : http://10.3.2.1/conn/ServiceInformation/v2.0
ProductInformation : ProductInformation
TLSMandatory       : true
ClientAutMandatory : true
ServiceInformation : ServiceInformation

Wenn ich jetzt aber zum Beispiel:

$connect.ns2

eingebe, passiert auch wieder gar nichts. Normalerweise müsste er doch schon in der ISE eine Autovervollständiung etwas vorschlagen. Aber nichts.
AndreasHoster
Lösung AndreasHoster 16.12.2021 um 17:30:50 Uhr
Goto Top
Wenn $connect.DocumentElement das obige ausgibt, dann ist der richtige Zugriffspfad $connect.DocumentElement.ns1 um an die Info http://10.3.2.1/conn/ServiceInformation/v2.0 zu kommen.
DIe obigen Namen sind die Attribute des DocumentElement Attributes.
Und da sollte die ISE auch Autovervollständigung anbieten.
149569
Lösung 149569 16.12.2021 aktualisiert um 18:35:06 Uhr
Goto Top
Bidde, Namespace Prefix einfach weglassen ... feddisch.
https://tio.run/##bVBNa8IwGL7nV5Qw8NT3TdoKW2mjDC@7DZQdNnYoMc5CTUoau/nra4 ...