forseti2003
Goto Top

Powershell - mehrere Zeilen zusammenfassen

Guten Abend,

ich bastel mal wieder an einem PowerShell-Skript, echt praktisch was man damit alles machen kann face-wink
Stoß aber auf ein nicht ganz triviales Problem.

Nehmen wir eine Textdatei, die ich in XML umwandeln will. Das Skript selbst macht eigentlich alles, wie ich es will - mit einer Ausnahme.

Die Datei sieht so aus:

Satzart:Text
100:Text1
110:Info1
110:Info2
110:Info3
100:Text2
110:InfoA
110:InfoB

Mein Problem, ich benötige den Text aus der Satzart 110 in einem Feld.
Nun war mein erster Gedanke, ich nehm mir eine Variable und befülle diese:

$Information = $Information + $TEXT

$xmlcreate.WriteStartElement("INFO")  
$xmlcreate.WriteElementString("INFO1", $Information)  
$xmlcreate.WriteEndElement()

Die Ausgabe macht daraus folgendes:

Info1
Info1Info2
Info1Info2Info3

(okay, fast das gewünschte Ergebnis) - in der XML kommt es dann so an:
<INFO>
<Info1>Info1</Info1>
</INFO>

<INFO>
<Info1>Info1Info2</Info1>
</INFO>

<INFO>
<Info1>Info1Info2Info3</Info1>
</INFO>

Nur unglücklicherweise hilft mir das in der XML nichts. Das Programm dazu setzt voraus, das der Wert nur einmal kommt.
Ich bräuchte also den letzten Wert der Variable und die restlichen Zeilen wären für die XML-Ausgabe unwichtig.

Gibt es dafür irgendeine saubere Lösung?

Content-Key: 391117

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

Printed on: April 18, 2024 at 23:04 o'clock

Mitglied: 137443
137443 Oct 30, 2018 updated at 20:35:33 (UTC)
Goto Top
Ich bräuchte also den letzten Wert der Variable
$data = (Import-Csv 'd:\daten.txt' -delimiter ':' | ?{$_.Satzart -eq '110'} | select -ExpandProperty Text) -join ''  
$data
Member: Forseti2003
Forseti2003 Oct 31, 2018 at 06:31:38 (UTC)
Goto Top
Das hilft mir so leider nicht dabei.

Hab aber jetzt einen vielversprechenden Ansatz in dem ich eine Funktion integriere, die das mit Parameterwerten übernimmt. Kommt die XML-Stelle mit dem kritischen Bereich, läuft die Funktion durch und liefert den Wert zurück. Der Vorteil bei der Parameter-Abfrage besteht darin, das ich gezielt auf die jeweiligen Satzarten (hier 100) eingrenzen und damit nur die jeweiligen Infotexte aus den darunter befindlichen Satzarten (hier 110) abgreifen kann.
Mitglied: 137443
137443 Oct 31, 2018 updated at 08:23:31 (UTC)
Goto Top
Du beschreibst auch in Rätseln, das obige filtert das raus was du wolltest mehr weiß hier leider nur die Glaskugel, sorry. Wie du eine XML schreibst weist du ja selbst, der Schnippsel liefert dir rein die Kombination aller Werte des Satzes 110, mehr hattest du nicht erwähnt.