In einer xml Zeichenlängen größer als 60 Zeichen finden
Hallo,
Habe eine XML mit etwa 2.2 Mio Zeilen. Darin stehen unter anderem sehr viele Zeilen die wie nachstehend lauten:
Ich möchte innerhalb der Anführungszeichen alle Zeichenlängen länger als 60 Zeichen finden. Die Bezeichnung ARTIKELNAME 1 ist jetzt nur ein Beispiel für wechselnde Artikelnamen. Zwischen dem letzten Zeichen 1 und dem zweiten Hochkomma befinden sich Leerzeichen, die sollen nicht mitgezählt werden. Leerzeichen zwischen ARTIKELNAME und 1 sollen schon mitgezählt werden.
Hat wer eine Ahnung wie man das bewerkstelligen kann?
Danke im Voraus,
MaceWindu
Habe eine XML mit etwa 2.2 Mio Zeilen. Darin stehen unter anderem sehr viele Zeilen die wie nachstehend lauten:
<bez id="ARTIKELNAME 1 "></bez>
Ich möchte innerhalb der Anführungszeichen alle Zeichenlängen länger als 60 Zeichen finden. Die Bezeichnung ARTIKELNAME 1 ist jetzt nur ein Beispiel für wechselnde Artikelnamen. Zwischen dem letzten Zeichen 1 und dem zweiten Hochkomma befinden sich Leerzeichen, die sollen nicht mitgezählt werden. Leerzeichen zwischen ARTIKELNAME und 1 sollen schon mitgezählt werden.
Hat wer eine Ahnung wie man das bewerkstelligen kann?
Danke im Voraus,
MaceWindu
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 501565
Url: https://administrator.de/contentid/501565
Ausgedruckt am: 21.11.2024 um 23:11 Uhr
3 Kommentare
Neuester Kommentar
Moin,
das XML sieht so aus:
Und dann die Powershell:
Ausgabe:
Jetzt noch ein kleines if darum, das das Ganze nach länger als 60 Zeichen filtert und in ein neues xml schreiben.
hth
Erik
das XML sieht so aus:
<?xml version="1.0"?>
<artikel>
<bez id="Artikel 1 "></bez>
<bez id="Artikel noch einer "></bez>
<bez id="Artikel und ein ganz langer "></bez>
</artikel>
Und dann die Powershell:
[xml]$xml = Get-Content .\artikel.xml
$art = $xml.artikel.bez
foreach($item in $art) {
# edit: das muss gar nicht sein $string = $item.id.trim()
# edit: write-host $item.id.trim() "has" $string.length "chars"
# edit:
write-host $item.id.trim() "has" $item.id.trim().length "chars"
}
Ausgabe:
Artikel 1 has 9 chars
Artikel noch einer has 18 chars
Artikel und ein ganz langer has 27 chars
Jetzt noch ein kleines if darum, das das Ganze nach länger als 60 Zeichen filtert und in ein neues xml schreiben.
hth
Erik
Moin,
Du musst natürlich die XML-Abfrage auf Deine Struktur anpassen. Wenn das z. B. so aussieht:
Dann muss das im Skript so aussehen:
Ganz einfach: Ein Element des XML sprichst Du an, indem Du alle Elternelemente aufzählst, die vorangehen. Ansonsten poste mal die Originalstruktur.
Und hier das kleine if:
hth
Erik
Du musst natürlich die XML-Abfrage auf Deine Struktur anpassen. Wenn das z. B. so aussieht:
<?xml version="1.0"?>
<artikel>
<artikelnummer nr=1>
<bez id="Was auch immer >
</bez>
</artikelnummer>
</artikel>
Dann muss das im Skript so aussehen:
$art = $xml.artikel.artikelnummer.bez
Ganz einfach: Ein Element des XML sprichst Du an, indem Du alle Elternelemente aufzählst, die vorangehen. Ansonsten poste mal die Originalstruktur.
Und hier das kleine if:
foreach($item in $art) {
if($item.id.trim().length -ge 60) {
write-host $item.id.trim() "has" $item.id.trim().length "chars"
}
}
hth
Erik