Konwersja rozbudowanego XML do Mysql

0

Mam dość rozbudowany plik XML z dużą ilością node'ów, child'ów i attribute'ów Po przekonwertowaniu na formę bardziej czytelną doszedłem do wniosku że konwersja ręczna może trochę potrwać, nie mówiąc o wpisaniu dobrych relacji. Jaki sposób waszym zdaniem będzie najlepszy, jakiś gotowy konwerter ?

A może powiecie jak konwertować takie tabele:

<naglowek atrybut1="wartosc" atrybut2="wartosc">
           <child-1 atrybut1="wartosc1" atrybut2=""......... jakaś ilość atrybutów />
                    <child-1-1 atrybut1="wartosc1" ....... jakaś ilość atrybutów />
           </child-1>
           <child-2 atrybut1="wartosc1" atrybut2="" ......... jakaś ilość atrybutów />
                    <child-2-1 atrybut1="wartosc1" ....... jakaś ilość atrybutów />
                    <child-2-2 atrybut1="wartosc1" ....... jakaś ilość atrybutów />
                     ....................... jakaś ilość child'ów
           </child-2>
           <child-3>content text</child-3>
</naglowek>

Konwersje próbuje wykonać w Javie, z jej wykonaniem nie ma problemu, ale szukam pomysłu ma to jak powinna wyglądać taka tabela w bazie, bo nie mam pomysłu. ;/

1

znaczy co? masz już tabele i chcesz to w nie wcisnąć czy nie masz tabel bo nie wiesz jak one mają być? Tutaj tabele chyba mocno zależą od całego układu XMLa ale i od danych, które w nim siedzą.

Szukasz jakiegoś automatu, czy chcesz to zrobić ręcznie (w sensie napisać jakiś prosty parser, który to załaduje do bazy tak jak Ty chcesz)?

Co do samych tabel (a nie tabeli bo ich powinno być min 3 aby to miało ręce i nogi, dla tych danych, które wkleiłeś) to np. takie:

nagłówek
* id
atrybut1
atrybut2

child1
* id
# nagłówek_id
atrybut1
atrybut2

child2
* id
# child1_id
atrybut1
atrybut2

To jeśli nie bierzesz pod uwagę, że całe gałęzie się mogą powtarzać

0

Mam tylko plik XML, więc muszę stworzyć Tabele i je wypełnić. Mój algorytm naliczył min.25 tabeli z całego XML przy właśnie tym toku myślenia. Dlatego także pytam o dobre, dostępne komercyjnie generatory.

1

to jeszcze sprecyzuj jakie to są te "dobre". Z doświadczenia mogę powiedzieć, że przy bardziej złożonych plikach i powiązaniach dobry to taki, który dobie naskrobiesz sam i przytniesz pod własne wymagania. Niestety.

0

Czyli powiadasz, że przy tak złożonym XML'u nie ma szans na znalezienie gotowego generatora, który to zrobi jak powinien :(. Trudno. Przeanalizuje jeszcze co do czego się odnosi i spróbuje coś wygenerować . Dzięki za pomoc.

0

napiszę raz jeszcze - "dobry" i "zrobi jak powinien" są bardzo subiektywne. Może Ty akurat coś znajdziesz dla siebie

1

zwykle się tak robi jeśli chodzi o XMLe czy inne cuda (przynajmniej ja tak zwykle robię):

  1. ściąga się/instaluje/importuje gotową bibliotekę do parsowania XML (Google: XML parser NAZWA_JĘZYKA_PROGRAMOWANIA). W końcu jeśli chcesz coś zrobić konkretnego, to nie masz czasu na tworzenie swojego parsera od zera

  2. chodzi się po strukturze drzewiastej/wizytuje się węzły w sposób właściwy dla danej biblioteki (różne biblioteki różnie to rozwiązują)

  3. opcjonalnie - zbiera się dane do jakiejś pośredniej struktury danych, którą sobie sami wymyślimy (takiej której będzie nam łatwo operować potem)

  4. coś się robi z danymi, analizuje się je, przekształca, renderuje do stringa etc.
    Tutaj byś mógł zamienić tagi, atrybuty i wartości atrybutów na pożądane dane w MySQL (pewnie pamiętając o strukturze hierarchicznej rodzic-dzieci, ale to już zależy jaki tam masz format tych danych, nie chce mi się wnikać w to już) , a potem mógłbyś wyrenderować te dane w postaci MySQL i zapisać do pliku.

konwerter ?

Szukaj parsera. Konwertowanie danych jeśli masz gotowy parser to jest zwykle drobnostka.

0

No ja mam parsery, korzystam z DOM, pewnie dlatego że go pierwszego poznałem. Przekonwertowałem cały XML na MapListy w Javie, ale trudne jest to skonfigurowanie w logiczny sposób, musiałbym do każdej podgałęzi robić dodatkowy atrybut jak wcześniej wspomniano.

1 użytkowników online, w tym zalogowanych: 0, gości: 1