[XML][PHP]Przetwarzanie pliku txt na xml w php? |
[XML][PHP]Przetwarzanie pliku txt na xml w php? |
30.07.2011, 08:03:14
Post
#1
|
|
Grupa: Zarejestrowani Postów: 124 Pomógł: 2 Dołączył: 19.04.2007 Skąd: Częstochowa Ostrzeżenie: (0%) |
Witam, zabawiam się w przetwarzanie pliku txt na xml, czy da się to zrobić w php? szukałem w google, to mi się jakieś konwertery pokazywały za pomocą wyślij plik my Ci zrobimy ;/ Tłumaczę o co mi dokładnie chodzi...
plik txt zawiera np
a chciał bym, aby się konwertował do xml w taki sposób:
Po pierwsze nie wiem czy w php się to da zrobić, po drugie dochodzą imgsrc i srodek itemu jako dane ktorych nie ma w pliku txt i też nie wiem czy da się to jakoś przetworzyć... chyba że istnieje taka opcja jak, konwersja z txt na xml, a później komparowanie z drugim xml, który ma zapisane brakuące dane i będzie doklejał? proszę o poradę za czym mam szukać i jakie rozwiązania mogę teoretycznie wykorzystać. np drugi xml zawierał by brakujące dane i parówał się albo kolejnością, bo jest stała, albo np po symbolu...
Z góry dziękuję. Ten post edytował adek- 30.07.2011, 08:05:54 |
|
|
30.07.2011, 10:27:02
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 173 Pomógł: 121 Dołączył: 24.09.2007 Skąd: Toruń Ostrzeżenie: (0%) |
1. Wczytujesz poprzez pętle linie po linii z pliku txt
2. Rozbijasz wczytaną linię explode, względem # 3. Wstawiasz dane w odpowiednie miejsca Wbrew pozorom nie jest to skomplikowane, ale zaraz sam to sprawdzę
daje taki efekt:
Odnośnie pliku XML tego drugiego, jeżeli i w jednym i drugim jest taki symbol, to możesz wyszukiwać właśnie względem niego Myślę, że wystarczająco Ciebie nakierowałem Ten post edytował ExPlOiT 30.07.2011, 11:15:10 |
|
|
30.07.2011, 13:26:57
Post
#3
|
|
Grupa: Zarejestrowani Postów: 124 Pomógł: 2 Dołączył: 19.04.2007 Skąd: Częstochowa Ostrzeżenie: (0%) |
ExPlOiT wystarczająco? Ty odwaliłeś za mnie praktycznie całą robotę Wielkie dziękuję i daje pomógł... mam tylko jeszcze takie pytanie, bo zamiast robić porównywanie xmla w celu dodawania nazwy własnej, w zasadzie nie wiem, czy nie dało by się zrobić tak, że podczas explode będzie sprawdzał że np symbol XXX to od razu przetważał go w "nazwa własna XXX" i wstawiał w CDATA
np
bo w zasadzie będzie stałe około 10 linii które będą raczej niezmienne więc można im przypisać dla ułatwienia 0,1,2, chyba że z automatu zrobić to jest łatwiej |
|
|
30.07.2011, 13:34:23
Post
#4
|
|
Grupa: Zarejestrowani Postów: 1 173 Pomógł: 121 Dołączył: 24.09.2007 Skąd: Toruń Ostrzeżenie: (0%) |
Możesz zrobić tak jak napisałeś. Pamiętaj, że czasami najprostsze rozwiązania są najlepsze
Ten post edytował ExPlOiT 30.07.2011, 13:37:31 |
|
|
2.08.2011, 09:42:46
Post
#5
|
|
Grupa: Zarejestrowani Postów: 124 Pomógł: 2 Dołączył: 19.04.2007 Skąd: Częstochowa Ostrzeżenie: (0%) |
Wybaczcie, że kontynuuje w tym samym artykule, ale w zasadzie wątek dotyczy dalej tego samego kodu. Jeśli mam stworzyć nowy wątek, to proszę o info.
Mianowicie mam problem z zapisem tego do pliku. Robiąc tak na samym końcu kodu:
wyrzuca mi xml'a z treścią:
Natomiast jeśli zrobię sobię nieco inaczej np:
to zapisze mi xml'a w postaci:
i ucina tam gdzie miałem oczywiście znak kończenia ; Jak to obejść i którą metodę szukać na internecie do nauczenia się? PS jeszcze będę miał jeden biznes,ale po kolei i na spokojnie |
|
|
2.08.2011, 11:01:12
Post
#6
|
|
Grupa: Zarejestrowani Postów: 46 Pomógł: 5 Dołączył: 30.06.2011 Ostrzeżenie: (0%) |
Działa tak jak to zaprogramowałeś. .Skoro zapisujesz do pliku wartość zmiennej $dane to musisz najpierw w pętli podoklejać wszystkie linie i dopiero na końcu wrzucić to do pliku.
Ten post edytował kudlatypawelek 2.08.2011, 11:04:20 |
|
|
2.08.2011, 11:58:16
Post
#7
|
|
Grupa: Zarejestrowani Postów: 124 Pomógł: 2 Dołączył: 19.04.2007 Skąd: Częstochowa Ostrzeżenie: (0%) |
Super, działa tylko jeszcze jak byś mi wytłumaczył jak to funkcjonuje w praktyce...
Na początku zrobiłeś pustą funkcję $myLine = ''; tak? a następnie przypisałeś dane $myLine .= '<item symbol="'.$line[0].'" imgsrc="images/'.strtolower($line[0]).'.png" jednostka="'.$line[1].'" dane="'.$line[2].'" dane2="'.$line[3].'"><![CDATA[$nazwaw]]></item>'; i wyrzuciłeś za pomocą $dane .= $myLine;? ogólnie pomijając fakt, że ja tam troszkę źle chciałem to wyświetlić, to czy nie wyświetliło by tych danych bez przypisywania ich zmiennej $myLine? Pytam tylko z ciekawości. I skoro to jest już rozwiązane, to mam pytanie odnośnie wcześniejszego rozpoznawania "XXX" i zamiany go na "nazwa własna XXX", YYY i nazwa własna YYY to muszę przyznać, że tak jak chciałem to zrobić na sztywno i samo postawienie warunku if
nie skutkuje bo przy wyświetlaniu tego
pozostaje puste pole w XML'u. Błędnie postawiłem warunek, czy źle to chcę wyświetlać? Ogólnie rzecz biorąc przypisanie takie na sztywno też nie jest zadowalające, bo jęśli się zmieni kolejność to wszystko szlak trafi i jeśli już będę potrafił tymczasowo przypisać to na sztywno to w między czasie zastanawiam się nad próbą automatycznego rozpoznawania np za pomocą tablicy. Zastanawiam się czy może to wypalić w ten sposób jak teoretyzuje...
i jakoś jej wywołanie, aby sobie przypisała znalezione wartości, w przypadku natrafienia na "XXX" wstawi "nazwa własna xxx" |
|
|
2.08.2011, 13:56:13
Post
#8
|
|
Grupa: Zarejestrowani Postów: 46 Pomógł: 5 Dołączył: 30.06.2011 Ostrzeżenie: (0%) |
myślę, że tu pomocne mogą być wyrażenia regularne, albo jeżeli ciągi wejściowe są w miarę okreslone z dwóch tablic (wejściowej i wyjściowej) + str_replace(). Co do Twojego pierwszego pytania to owszem do $dane mogłeś w foreachu przypisywać całe linie $dane .= "linia", ale dzięki zastosowaniu oddzielnej zmiennej mamy porządek
|
|
|
2.08.2011, 22:27:10
Post
#9
|
|
Grupa: Zarejestrowani Postów: 124 Pomógł: 2 Dołączył: 19.04.2007 Skąd: Częstochowa Ostrzeżenie: (0%) |
Tak to będą stałe i bardzo proste ciągi wejściowe, a dokładniej walutowe np. jeśli będzie USD to ma się pokazać dolar amerykański itd Tylko czemu mi to nie działa, tzn działa, ale pokazuje o jedno przesunięte w dół?
gdy mam tak:
to mi wyrzuca plik xml przesuniety o jeden w dol czyli tam gdzie ejst USD to nie wyswietli nic, a tam gdzie EUR wysweitli dolar amerykanski
|
|
|
2.08.2011, 23:18:23
Post
#10
|
|
Grupa: Zarejestrowani Postów: 4 340 Pomógł: 542 Dołączył: 15.01.2006 Skąd: Olsztyn/Warszawa Ostrzeżenie: (0%) |
Popatrz na poniższy kod, skup się, weź 10 wdechów i zastanów się czy w dobrym miejscu exploda użyłeś
-------------------- I'm so fast that last night I turned off the light switch in my hotel room and was in bed before the room was dark - Muhammad Ali.
Peg jeżeli chcesz uprawiać sex to dzieci muszą wyjść, a jeżeli chcesz żeby był dobry ty też musisz wyjść - Al Bundy. QueryBuilder, Mootools.net, bbcradio1::MistaJam http://www.phpbench.com/ |
|
|
4.08.2011, 10:16:09
Post
#11
|
|
Grupa: Zarejestrowani Postów: 124 Pomógł: 2 Dołączył: 19.04.2007 Skąd: Częstochowa Ostrzeżenie: (0%) |
Hmm nawet nie wiedziałem, że takie coś może być problemem! W każdym bądź razie dzięki chłopaki, na razie wszystko z czym miałem problemy jest rozwiązane... sogi poszły już do Was... chociaż pewnie jeszcze nie raz będziecie mieli okazję pomóc :-)
------------ edited 04.08.2011 ---------- A w zasadzie jest jeszcze taka możliwość, żeby np jakiejś linijki nie wyrzucało? np żeby mi wykluczyło trzecią linijkę? Robi się to na zasadzie pomijjania linii x, czy na zasadzie jak zobaczysz YYY to nie wyrzucaj? Za czym mam szukać i jakimi zmiennymi do zrobienia tego?
Ten post edytował adek- 4.08.2011, 10:16:42 |
|
|
4.08.2011, 10:19:29
Post
#12
|
|
Grupa: Zarejestrowani Postów: 4 340 Pomógł: 542 Dołączył: 15.01.2006 Skąd: Olsztyn/Warszawa Ostrzeżenie: (0%) |
-------------------- I'm so fast that last night I turned off the light switch in my hotel room and was in bed before the room was dark - Muhammad Ali.
Peg jeżeli chcesz uprawiać sex to dzieci muszą wyjść, a jeżeli chcesz żeby był dobry ty też musisz wyjść - Al Bundy. QueryBuilder, Mootools.net, bbcradio1::MistaJam http://www.phpbench.com/ |
|
|
Wersja Lo-Fi | Aktualny czas: 28.04.2024 - 09:40 |