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-Key: 1627111551

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

Printed on: April 25, 2024 at 05:04 o'clock

Member: MrCount
MrCount Dec 16, 2021 at 16:06:03 (UTC)
Goto Top
Mitglied: 143611
143611 Dec 16, 2021 at 16:07:43 (UTC)
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!
Member: Fenris14
Fenris14 Dec 16, 2021 at 16:20:04 (UTC)
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.
Member: AndreasHoster
Solution AndreasHoster Dec 16, 2021 at 16:30:50 (UTC)
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.
Mitglied: 149569
Solution 149569 Dec 16, 2021 updated at 17:35:06 (UTC)
Goto Top
Bidde, Namespace Prefix einfach weglassen ... feddisch.
https://tio.run/##bVBNa8IwGL7nV5Qw8NT3TdoKW2mjDC@7DZQdNnYoMc5CTUoau/nra4 ...