Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Notepad ++ XML wyszukiwanie danych

Misiek021 10 Lis 2010 12:54 2000 5
  • #1 10 Lis 2010 12:54
    Misiek021
    Poziom 9  

    Witam i proszę o pomoc.

    Posiadam plik XML z 5000 wierszy.

    Wycinek kodu.

    Code:

    <mz:pacjent-stat urodz="1980-05-01" plec="K" teryt="0000000"/>
    </mz:pacjent>
    <mz:ksiega rok="2010" nr="001" poz="9876" nr-dziecka="0"/>


    Wyszukuje w pliku ciąg znaków z odpowiednimi terytorium zamieszkania.
    Code:
    teryt="0000000"


    Informacja jaką chce zebrać to dwa wiersze poniżej kodu teryt
    Code:
    poz="9876"


    Wyszukiwanie w N++ daje mi tylko wyszukanie "teryt"

    <mz:pacjent-stat urodz="1992-12-24" plec="K" teryt="0000000"/>
    <mz:pacjent-stat urodz="1925-03-10" plec="K" teryt="0000000"/>
    <mz:pacjent-stat urodz="1945-08-31" plec="K" teryt="0000000"/>

    , a potrzebuje "poz",

    Może ktoś wie jak to zrobić.

    0 5
  • #2 10 Lis 2010 13:27
    arnoldziq
    Moderator Programowanie

    Albo ja jestem wyjątkowo "zamulony" dzisiaj, albo ty coś kiepsko ten problem tłumaczysz.
    Chcesz wyszukać jakąś informację, a zamiast wyniku otrzymać inną informację, która znajduje się ileś-tam linii poniżej ?
    W dodatku chcesz to zrobić z poziomu Notepad-a(++) ?
    Jak ty to sobie wyobrażasz?

    0
  • #3 10 Lis 2010 14:46
    Misiek021
    Poziom 9  

    Code:

    Albo ja jestem wyjątkowo "zamulony" dzisiaj, albo ty coś kiepsko ten problem tłumaczysz.
    Chcesz wyszukać jakąś informację, a zamiast wyniku otrzymać inną informację, która znajduje się ileś-tam linii poniżej ?
    W dodatku chcesz to zrobić z poziomu Notepad-a(++) ?
    Jak ty to sobie wyobrażasz?


    Dokładnie tak jak piszesz - żeby lepiej zobrazować napiszę przykład.

    W XML wyszukuje informację kto nie ma miejsca zamieszkania uzupełnionego
    ( teryt="0000000"). Dwie linie poniżej jest identyfikator tej osoby. Musiałbym taką listę identyfikatorów wydrukować i przekazać dalej. Ale samo wyszukiwanie dotyczy teryt.


    Jakoś to muszę zrobić więc będę próbował.

    N++ ma dobre wyszukiwanie i funkcje makr,
    więc czasami dobry pomysł podrzucony robi swoje.

    0
  • #4 10 Lis 2010 15:29
    arnoldziq
    Moderator Programowanie

    Nie sądzę żeby ci się taka sztuczka udała.
    Już lepiej zaimportuj ten plik XML do Excel-a i użyj makr do poszukiwań. Może w ten sposób coś osiągniesz.
    Jeszcze jedno : Nie znam całej struktury tego twojego pliku, ale ten kawałek który wkleiłeś, wskazuje na to, że nawet nie jest to poprawnie stworzony plik XML, tylko jakaś "wariacja" na ten temat.

    Code:
    <mz:pacjent-stat urodz="1980-05-01" plec="K" teryt="0000000"/>
    
    </mz:pacjent>
    <mz:ksiega rok="2010" nr="001" poz="9876" nr-dziecka="0"/>
    </mz:ksiega>

    Taka struktura wskazuje, że te dwie node-y mz:pacjent i mz:ksiega nie są nawet ze sobą połączone w normalny sposób. Mogą być jedynie przyporządkowane do siebie, na podstawie ich kolejnego występowania. A to już z XML-em nie ma nic wspólnego.

    0
  • Pomocny post
    #5 10 Lis 2010 15:32
    marcinj12
    Poziom 40  

    A nie możesz skopiować tego do Excela? :)
    Potem w kolumnie obok zrób prostą funkcję łączącą trzy wiersze w jeden (zlepienie znaczkiem & + funkcja, coś w stylu: =JEŻELI(MOD(WIERSZ(F6);3) = 0;E6&E5&E4;"")).
    Wynik przefiltruj po niepustych i przekopiuj do osobnego arkusza żeby mieć jeden pod drugim, potem użyj filtru: zawiera teryt="0000000"
    i funkcji tekstowych, m.in. zwracających fragment tekstu, wyszukaj co potrzebujesz...

    0
  • #6 10 Lis 2010 17:53
    Misiek013
    Poziom 9  

    Spróbuje z Excelem.

    Fragment pochodzi z raportu NFZ-owego.

    0