Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

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.

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.

@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?

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? ;)

Auch wenn man es nicht tun sollte: ~ s/(\s*)(<tag[0-9]>)(\s*)//g :rolleyes:

/\s/ ein Leerzeichen oder ein Steuerzeichen (CR, LF, FF, TAB)

Bearbeitet von goepp

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.