PowersShell nach Semikolon Zeilenumbruch?
Hallo, ich versuche eine xml Datei wie folgt zu bearbeiten.
Ich will nach <FVALUE> suchen und die werte dazwischen
<FVALUE> gelb; grün; blau </FVALUE>
einzeln verpacken. So:
<FVALUE>gelb</FVALUE>
<FVALUE>grün</FVALUE>
<FVALUE>blau</FVALUE>
kennt da jemand die PowerShell befehle die ich benötige?
es sind mal mehr mal weniger Werte und das Semikolon soll verschwinden.
Danke schon mal im Voraus
1 Antwort
Wenn das wirklich immer so in einer Zeile steht, brauchst du nur mit Get-Content die Datei einlesen und dann mit einer foreach-Schleife Zeile füe Zeile durchgehen und dann mit einer einfachen If-Condition abfragen ob FValue drinnen steht und da drinnen mit Regex das Semikolon entfernen und alles dann in eine neue Datei schreiben
foreach ($Zeile in $Dateiinhalt)
{
if ($Zeile -like "*<FVALUE>*")
{
$AngepassteZeile = $Zeile.replace(';','</FVALUE><FVALUE>')
Add-Content -Path .\neueDatei.xml -Value $AngepassteZeile
}
else
{
Add-Content -Path .\neueDatei.xml -Value $Zeile
}
}
Die Datei muss natürlich vorab angelegt sein, sonst kommt ein Fehler.
Hab den Code nicht getestet, müsste aber funktionieren.
Alsoo, danke dir erstmal für deine Antwort:)
Ich habe deinen Code mal angefügt und $Dateiinhalt durch das ersetzt was ich glaub da stehen muss. (bin Newbie)
So 100% richtig funktioniert das aber noch nicht :(
PShell rattert die Inhalte durch
macht eine neue Datei, aber: "Die XML-Seite kann nicht angezeigt werden"
So habe ich den Code ausgeführt. $XmlData beinhaltet den direkten Pfad nach <FVALUE> In der Struktur gibt es aber noch mehr Nebenpunkte. Muss ich das irgendwie berücksichtigen?
$XmlData = [xml](Get-Content C:\Users\MeinName\Desktop\DE_nv2040.xml)
#$xmlData.GetType()
$XmlData.BMECAT.T_NEW_CATALOG.PRODUCT.PRODUCT_FEATURES.FEATURE.FVALUE
foreach ($Zeile in $XmlData)
{
if ($Zeile -like "*<FVALUE>*")
{
$AngepassteZeile = $Zeile.replace(';','</FVALUE><FVALUE>')
Add-Content -Path .\neueDatei.xml -Value $AngepassteZeile
}
else
{
Add-Content -Path .\neueDatei.xml -Value $Zeile
}
}
danke dir, ich bin soweit gekommen das ich die Datei einlesen konnte und mir alle Inhalte von FVALUE anzeigen lassen kann.
Foreach & If-Condition
kannst du dazu ein Beispiel geben? :D