seohost
pytanie zadane 16 czerwca 2019 w Programowanie przez użytkownika anonimowy

Posiadam plik z tekstem ze znacznikami w XML, choć to jest nieistotne, wygląda on mniej więcej tak:

<znacznik>Znacznik 1</znacznik>

<tekst>To jest tekst jeden</tekst>

<znacznik>Znacznik 2</znacznik>

<tekst>To jest tekst dwa</tekst>

<znacznik>Znacznik 3</znacznik>

<tekst>To jest tekst trzy</tekst>

 I teraz tak. Tekstu jest dużo więc nie mogę zrobić tego ręcznie, a chciałbym pousuwać wszystkie linijki ze znacznikami <tekst>...</tekst> aby zostały tylko tekst w <znacznik>. Gdyby to były tylko same znaczniki, to łatwo można by to zrobić bo wszędzie jest ten sam tekst, ale tutaj jest problem, gdyż między tym znacznikiem jest zawsze jakiej inne zdania.

Jak mogę pousuwać wszystkie linijki i jakim narzędziem? Najlepiej jakoś z automatu

1 odpowiedź

odpowiedź 16 czerwca 2019 przez użytkownika

Najprościej jest do tego użyć wyrażeń regularnych i pousuwać linie kodu w darmowym programie Notepad++.

Otwierasz swój plik w ww. programie i klikasz Ctrl+F, wyskoczy okienko wyszukiwania/zamiany. Klikasz zakładkę Zamień i w okienku Szukany tekst wpisujesz:

<tekst>(.*)</tekst>  

Powyższe wyrażenie znaczy tyle, że chodzi Ci o cały tekst między znacznikami <tekst>. 

(.*) - oznacza cokolwiek się tam znajduje, dowolny tekst.

Jeszcze niżej w Zamień na nic nie wpisujesz, gdyż chcesz usunąć tą linijkę. I musisz na dole zaznaczyć opcję Wyrażenia regularne, tak jak to jest na przedstawionym obrazku poniżej

wyrażenia regularne na tekście

Jak już masz wszystko poustawiane, to na koniec klikasz na przycisk Zamień wszystkie i program usuwa (wstawia pusty znak) w miejsce znaczników <tekst>...</tekst>.

Efekt będzie taki:

<znacznik>Znacznik 1</znacznik>
 

<znacznik>Znacznik 2</znacznik>
 

<znacznik>Znacznik 3</znacznik>

Jeśli chcesz pousuwać puste linie z tekstu, też możesz to automatycznie zrobić również w Notepad++, wybierając z menu Edycja -> Operacje na liniach -> Usuwanie pustych linii.

...