Veröffentlicht 24. Mai 20178 j Hallo, ich hab zwar schon mit regulären Ausdrücken gearbeitet, hier komme ich aber nicht weiter. Ich möchte aus einer XML-Datei bestimmte Tags komplett löschen. Ein Beispiel wäre das hier: <tag1> <tag2> <tag3> Die Ausgangstags sollen dann separat gelöscht werden. Wie stelle ich das mit regulären Ausdrücken an? Ich müsste ja erstmal den Zeilenumbruch löschen, was aber mit \n, \r oder \r\n nicht geht. Danach müsste er auch die Leerzeichen vor dem 2. Tag löschen, das geht mit .*?. Beim Zeilenumbruch komm ich nicht weiter. Eigentlich sollte der Linux-Zeilenumbruch gehen, da die XML unter Linux erstellt wurde. Ich teste das ganze hier mit Notepadqq unter Ubuntu 16.05.
24. Mai 20178 j XML-Dateien sollten nicht mit regulären Ausdrücken geparsed werden:https://stackoverflow.com/questions/6751105/why-its-not-possible-to-use-regex-to-parse-html-xml-a-formal-explanation-in-la Du merkst ja selber, dass es gar nicht so trivial ist, da du z.B. auch Zeilenumbrüche berücksichtigen müsstest. Das beste ist, du lässt die XML-Datei mittels einer geeigneten Bibliothek (mit welcher Sprache entwickelst du?) und löschst dann die Einträge aus der DOM-Struktur und generierst eine neue XML-Datei.
24. Mai 20178 j Erstens nutzt zu Xpath anstatt RegEx und zweitens wirst du darüber hinaus mit XSLT am schnellsten an dein Ziel kommen.
29. Mai 20178 j @V1RTU4L Mal davon abgesehen, dass du offenbar nicht die komplette Frage gelesen hast, hat XSLT hier erst mal gar nichts zu suchen. Es geht hier um ein reines Parsen von XML-Strukturen. Ein XSL-Prozessor ist nur nötig, wenn es auch ein geeignetes Zielformat gibt. Wenn die Daten nur irgendwie in den Speicher kommen sollen ist es recht nutzlos. Wie @Whiz-zarD schon schrieb sollte man einen Parser nutzen. Ob das nun ein DOM- oder ein Ereignisbasierter-Parser (SAX, ...) lässt sich i.d.R. vom Anwendungsfall her ableiten. Bibliotheken kommen erst in Frage, wenn es sich tatsächlich um eine Programmiertätigkeit handelt. Davon habe ich allerdings nichts gelesen, ggf. wird die Anwendung nur als reiner Texteditor verwendet. @occi23Was ist dein Ziel? Und was willst/ kannst du benutzen?
29. Mai 20178 j vor 8 Stunden schrieb etreu: Ein XSL-Prozessor ist nur nötig, wenn es auch ein geeignetes Zielformat gibt. Wenn die Daten nur irgendwie in den Speicher kommen sollen ist es recht nutzlos. Ich hätte die Frage auch so gedeutet, dass das Zielformat "dieses XML ohne diese Tags" ist. Kann natürlich sein, dass deine Interpretation der ungenauen Fragestellung treffender ist. vor 8 Stunden schrieb etreu: Was ist dein Ziel? Und was willst/ kannst du benutzen? Du hast offenbar nicht die komplette Frage gelesen, hm?
30. Mai 20178 j Auch wenn man es nicht tun sollte: ~ s/(\s*)(<tag[0-9]>)(\s*)//g /\s/ ein Leerzeichen oder ein Steuerzeichen (CR, LF, FF, TAB) Bearbeitet 30. Mai 20178 j von goepp
Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.