Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

#1  2013-12-03 17:17:43

  hello_world - Członek DUG

hello_world
Członek DUG
Skąd: Rymanów Zdrój
Zarejestrowany: 2010-06-03
Serwis

dane z xml-a

Jak wyciągnąć dane od znacznika do określonego znacznika w pliku xml-owym
Znacznik produkt powtarza się 372 razy i teraz potzrebuje podzielić ten plik na kataegorie wg. pola <kat></kat> Czyli wszystkie produkty które będą miały kategorie X będą w pliku X.xml itd


Kod:

<produkty>
<produkt id="7004" nazwa="tablica suchościeralna z Twoją grafiką w dowolnym rozmiarze" kod="" dostawca="">
<rodzaj>obrazy</rodzaj>
<cena>25.6</cena>
<opis><![CDATA[ <p><strong>Tablicę zamówić można w dowolnym rozmiarze.</strong></p><div id=msize>rozmiar bazowy: 60,0 x 30,0cm szer. x wys. [cm]</div><p>Dostępna w postaci elastycznej, samoprzylepnej folii lub tablicy o grubości 5mm wykonanej z PCV dla większej sztywności i przeznaczonej do montażu w tradycyjny sposób.</p><p style=font-weight: bold;>Możesz załączyć logo firmy, grafikę firmową, stworzyć własny harmonogram, planer, tablicę zespołową, kartę wydawczą z magazynu, spis materiałów, zmywalne etykiety czy elementy promocyjne POS.</p><img style=margin:10px 0; src=img/wydrukuj_swoje_zdjecie{JEZYK_613}.png><p>Poprowadzimy Cię krok po kroku. Po złożeniu zamówienia otrzymasz od nas poglądowy plik, który będziesz mógł sprawdzić i zatwierdzić do druku. Jeżeli potrzebujesz dodatkowych wskazówek, skontaktuj się z nami. Możesz również przesłać do nas swoją grafikę na adres <a href=mailto:info@wally.com.pl>info@wally.com.pl</a>, ocenimy je i przygotujemy plik poglądowy. Akceptujemy formaty jpg, tiff oraz wszelkie wektorowe.</p><h2>prosty montaż</h2><p>Samoprzylepną tablicę suchościeralną wystarczy nakleić na płaską powierzchnię - ścianę, blat stołu lub biurka czy nawet meble. Równie łatwo można ją w każdej chwili zdemontować - zwyczajnie odkleić nie pozostawiając żadnych śladów. Jeżeli wybierzesz tablicę z podkładem z płyty PCV możesz przykleić ją za pomocą taśmy dwustronnej, powiesić, przykręcić lub po prostu wykorzystać jako wolnostojącą.</p><p><strong>Do pisania na tablicy należy używać wyłącznie mazaków przeznaczonych dla tablic suchościeralnych.</strong></p><h2>dlaczego tablica samoprzylepna?</h2><ul><li>lekka i bezpieczna</li><li>tańsza od tradycyjnych tablic</li><li>zapewnia prosty i czysty montaż</li><li><strong>wykonana z profesjonalnej folii tablicowej</strong></li><li>elastyczna i cienka tylko 1 mm grubości lub sztywna 5mm<br></li><li>szybko przykleisz i odkleisz</li><li>dowolny rozmiar</li></ul><p><strong>termin realizacji</strong><br>Tablice realizujemy w terminie od 2 do 5 dni roboczych.</p><p><strong>Pamiętaj!</strong><br>Jeżeli obydwa z wybranych przez Ciebie wymiarów przekroczą 135 cm, wówczas tablica będzie składała się z części.</p><p><strong>Zwróć uwagę</strong> - farby o bardzo wysokiej zawartości lateksu niekorzystnie wpływają na przyczepność tablic. Decydując się na stworzenie dekoracji na tym podłożu robisz to na własną odpowiedzialność gdyż nie uznajemy reklamacji związanych z tymi farbami.</p> ]]></opis>
<kategorie>
<kat>z Twoim nadrukiem</kat>
<kat>tablica na wymiar</kat>
</kategorie>
<atrybuty>
<atrybut id="169425" zmianaceny="0" typzmiany="1" wartosc="0">
<opcja>szerokość</opcja>
<nazwa>60 cm</nazwa>
</atrybut>
<atrybut id="169426" zmianaceny="1" typzmiany="1" wartosc="16.67">
<opcja>szerokość</opcja>
<nazwa>70 cm</nazwa>
</atrybut>
<atrybut id="169427" zmianaceny="1" typzmiany="1" wartosc="33.33">
<opcja>szerokość</opcja>
<nazwa>80 cm</nazwa>
</atrybut>
<atrybut id="169428" zmianaceny="1" typzmiany="1" wartosc="50">
<opcja>szerokość</opcja>
<nazwa>90 cm</nazwa>
</atrybut>
<atrybut id="169429" zmianaceny="1" typzmiany="1" wartosc="66.67">
<opcja>szerokość</opcja>
<nazwa>100 cm</nazwa>
</atrybut>
<atrybut id="169430" zmianaceny="1" typzmiany="1" wartosc="83.43">
<opcja>szerokość</opcja>
<nazwa>110 cm</nazwa>
</atrybut>
<atrybut id="169431" zmianaceny="1" typzmiany="1" wartosc="100.01">
<opcja>szerokość</opcja>
<nazwa>120 cm</nazwa>
</atrybut>
<atrybut id="169432" zmianaceny="1" typzmiany="1" wartosc="116.68">
<opcja>szerokość</opcja>
<nazwa>130 cm</nazwa>
</atrybut>
<atrybut id="169433" zmianaceny="1" typzmiany="1" wartosc="133.35">
<opcja>szerokość</opcja>
<nazwa>140 cm</nazwa>
</atrybut>
<atrybut id="169434" zmianaceny="1" typzmiany="1" wartosc="150.02">
<opcja>szerokość</opcja>
<nazwa>150 cm</nazwa>
</atrybut>
<atrybut id="169435" zmianaceny="1" typzmiany="1" wartosc="166.69">
<opcja>szerokość</opcja>
<nazwa>160 cm</nazwa>
</atrybut>
<atrybut id="169436" zmianaceny="1" typzmiany="1" wartosc="183.36">
<opcja>szerokość</opcja>
<nazwa>170 cm</nazwa>
</atrybut>
<atrybut id="169437" zmianaceny="1" typzmiany="1" wartosc="200.03">
<opcja>szerokość</opcja>
<nazwa>180 cm</nazwa>
</atrybut>
<atrybut id="169438" zmianaceny="1" typzmiany="1" wartosc="216.7">
<opcja>szerokość</opcja>
<nazwa>190 cm</nazwa>
</atrybut>
<atrybut id="169439" zmianaceny="1" typzmiany="1" wartosc="233.37">
<opcja>szerokość</opcja>
<nazwa>200 cm</nazwa>
</atrybut>
<atrybut id="169440" zmianaceny="1" typzmiany="1" wartosc="250.04">
<opcja>szerokość</opcja>
<nazwa>210 cm</nazwa>
</atrybut>
<atrybut id="169441" zmianaceny="1" typzmiany="1" wartosc="266.71">
<opcja>szerokość</opcja>
<nazwa>220 cm</nazwa>
</atrybut>
<atrybut id="169442" zmianaceny="1" typzmiany="1" wartosc="283.38">
<opcja>szerokość</opcja>
<nazwa>230 cm</nazwa>
</atrybut>
<atrybut id="169443" zmianaceny="1" typzmiany="1" wartosc="300.05">
<opcja>szerokość</opcja>
<nazwa>240 cm</nazwa>
</atrybut>
<atrybut id="169444" zmianaceny="1" typzmiany="1" wartosc="316.72">
<opcja>szerokość</opcja>
<nazwa>250 cm</nazwa>
</atrybut>
<atrybut id="169445" zmianaceny="1" typzmiany="1" wartosc="333.39">
<opcja>szerokość</opcja>
<nazwa>260 cm</nazwa>
</atrybut>
<atrybut id="169446" zmianaceny="1" typzmiany="1" wartosc="350.06">
<opcja>szerokość</opcja>
<nazwa>270 cm</nazwa>
</atrybut>
<atrybut id="169447" zmianaceny="1" typzmiany="1" wartosc="366.73">
<opcja>szerokość</opcja>
<nazwa>280 cm</nazwa>
</atrybut>
<atrybut id="169448" zmianaceny="1" typzmiany="1" wartosc="383.4">
<opcja>szerokość</opcja>
<nazwa>290 cm</nazwa>
</atrybut>
<atrybut id="169449" zmianaceny="1" typzmiany="1" wartosc="400.07">
<opcja>szerokość</opcja>
<nazwa>300 cm</nazwa>
</atrybut>
<atrybut id="169450" zmianaceny="1" typzmiany="1" wartosc="416.74">
<opcja>szerokość</opcja>
<nazwa>310 cm</nazwa>
</atrybut>
<atrybut id="169451" zmianaceny="1" typzmiany="1" wartosc="433.41">
<opcja>szerokość</opcja>
<nazwa>320 cm</nazwa>
</atrybut>
<atrybut id="169452" zmianaceny="1" typzmiany="1" wartosc="450.08">
<opcja>szerokość</opcja>
<nazwa>330 cm</nazwa>
</atrybut>
<atrybut id="169453" zmianaceny="1" typzmiany="1" wartosc="466.75">
<opcja>szerokość</opcja>
<nazwa>340 cm</nazwa>
</atrybut>
<atrybut id="169454" zmianaceny="1" typzmiany="1" wartosc="483.42">
<opcja>szerokość</opcja>
<nazwa>350 cm</nazwa>
</atrybut>
<atrybut id="169455" zmianaceny="1" typzmiany="1" wartosc="500.09">
<opcja>szerokość</opcja>
<nazwa>360 cm</nazwa>
</atrybut>
<atrybut id="169456" zmianaceny="1" typzmiany="1" wartosc="516.76">
<opcja>szerokość</opcja>
<nazwa>370 cm</nazwa>
</atrybut>
<atrybut id="169457" zmianaceny="1" typzmiany="1" wartosc="533.43">
<opcja>szerokość</opcja>
<nazwa>380 cm</nazwa>
</atrybut>
<atrybut id="169458" zmianaceny="1" typzmiany="1" wartosc="550.1">
<opcja>szerokość</opcja>
<nazwa>390 cm</nazwa>
</atrybut>
<atrybut id="169459" zmianaceny="1" typzmiany="1" wartosc="566.77">
<opcja>szerokość</opcja>
<nazwa>400 cm</nazwa>
</atrybut>
<atrybut id="169460" zmianaceny="1" typzmiany="1" wartosc="583.44">
<opcja>szerokość</opcja>
<nazwa>410 cm</nazwa>
</atrybut>
<atrybut id="169461" zmianaceny="1" typzmiany="1" wartosc="600.11">
<opcja>szerokość</opcja>
<nazwa>420 cm</nazwa>
</atrybut>
<atrybut id="169462" zmianaceny="1" typzmiany="1" wartosc="616.78">
<opcja>szerokość</opcja>
<nazwa>430 cm</nazwa>
</atrybut>
<atrybut id="169463" zmianaceny="1" typzmiany="1" wartosc="633.45">
<opcja>szerokość</opcja>
<nazwa>440 cm</nazwa>
</atrybut>
<atrybut id="169464" zmianaceny="1" typzmiany="1" wartosc="650.12">
<opcja>szerokość</opcja>
<nazwa>450 cm</nazwa>
</atrybut>
<atrybut id="169465" zmianaceny="1" typzmiany="1" wartosc="666.79">
<opcja>szerokość</opcja>
<nazwa>460 cm</nazwa>
</atrybut>
<atrybut id="169466" zmianaceny="1" typzmiany="1" wartosc="683.46">
<opcja>szerokość</opcja>
<nazwa>470 cm</nazwa>
</atrybut>
<atrybut id="169467" zmianaceny="1" typzmiany="1" wartosc="700.13">
<opcja>szerokość</opcja>
<nazwa>480 cm</nazwa>
</atrybut>
<atrybut id="169468" zmianaceny="1" typzmiany="1" wartosc="716.8">
<opcja>szerokość</opcja>
<nazwa>490 cm</nazwa>
</atrybut>
<atrybut id="169469" zmianaceny="1" typzmiany="1" wartosc="733.47">
<opcja>szerokość</opcja>
<nazwa>500 cm</nazwa>
</atrybut>
<atrybut id="169402" zmianaceny="0" typzmiany="1" wartosc="0">
<opcja>wysokość</opcja>
<nazwa>30 cm</nazwa>
</atrybut>
<atrybut id="169403" zmianaceny="1" typzmiany="1" wartosc="33.33">
<opcja>wysokość</opcja>
<nazwa>40 cm</nazwa>
</atrybut>
<atrybut id="169404" zmianaceny="1" typzmiany="1" wartosc="66.66">
<opcja>wysokość</opcja>
<nazwa>50 cm</nazwa>
</atrybut>
<atrybut id="169405" zmianaceny="1" typzmiany="1" wartosc="100">
<opcja>wysokość</opcja>
<nazwa>60 cm</nazwa>
</atrybut>
<atrybut id="169406" zmianaceny="1" typzmiany="1" wartosc="133.33">
<opcja>wysokość</opcja>
<nazwa>70 cm</nazwa>
</atrybut>
<atrybut id="169407" zmianaceny="1" typzmiany="1" wartosc="166.66">
<opcja>wysokość</opcja>
<nazwa>80 cm</nazwa>
</atrybut>
<atrybut id="169408" zmianaceny="1" typzmiany="1" wartosc="200">
<opcja>wysokość</opcja>
<nazwa>90 cm</nazwa>
</atrybut>
<atrybut id="169409" zmianaceny="1" typzmiany="1" wartosc="233.33">
<opcja>wysokość</opcja>
<nazwa>100 cm</nazwa>
</atrybut>
<atrybut id="169410" zmianaceny="1" typzmiany="1" wartosc="266.66">
<opcja>wysokość</opcja>
<nazwa>110 cm</nazwa>
</atrybut>
<atrybut id="169411" zmianaceny="1" typzmiany="1" wartosc="300">
<opcja>wysokość</opcja>
<nazwa>120 cm</nazwa>
</atrybut>
<atrybut id="169412" zmianaceny="1" typzmiany="1" wartosc="333.33">
<opcja>wysokość</opcja>
<nazwa>130 cm</nazwa>
</atrybut>
<atrybut id="169413" zmianaceny="1" typzmiany="1" wartosc="366.66">
<opcja>wysokość</opcja>
<nazwa>140 cm</nazwa>
</atrybut>
<atrybut id="169414" zmianaceny="1" typzmiany="1" wartosc="400">
<opcja>wysokość</opcja>
<nazwa>150 cm</nazwa>
</atrybut>
<atrybut id="169415" zmianaceny="1" typzmiany="1" wartosc="433.33">
<opcja>wysokość</opcja>
<nazwa>160 cm</nazwa>
</atrybut>
<atrybut id="169416" zmianaceny="1" typzmiany="1" wartosc="466.66">
<opcja>wysokość</opcja>
<nazwa>170 cm</nazwa>
</atrybut>
<atrybut id="169417" zmianaceny="1" typzmiany="1" wartosc="500">
<opcja>wysokość</opcja>
<nazwa>180 cm</nazwa>
</atrybut>
<atrybut id="169418" zmianaceny="1" typzmiany="1" wartosc="533.33">
<opcja>wysokość</opcja>
<nazwa>190 cm</nazwa>
</atrybut>
<atrybut id="169419" zmianaceny="1" typzmiany="1" wartosc="566.66">
<opcja>wysokość</opcja>
<nazwa>200 cm</nazwa>
</atrybut>
<atrybut id="169420" zmianaceny="1" typzmiany="1" wartosc="600">
<opcja>wysokość</opcja>
<nazwa>210 cm</nazwa>
</atrybut>
<atrybut id="169421" zmianaceny="1" typzmiany="1" wartosc="633.33">
<opcja>wysokość</opcja>
<nazwa>220 cm</nazwa>
</atrybut>
<atrybut id="169422" zmianaceny="1" typzmiany="1" wartosc="666.66">
<opcja>wysokość</opcja>
<nazwa>230 cm</nazwa>
</atrybut>
<atrybut id="169423" zmianaceny="1" typzmiany="1" wartosc="700">
<opcja>wysokość</opcja>
<nazwa>240 cm</nazwa>
</atrybut>
<atrybut id="169424" zmianaceny="1" typzmiany="1" wartosc="733.33">
<opcja>wysokość</opcja>
<nazwa>250 cm</nazwa>
</atrybut>
<atrybut id="169470" zmianaceny="0" typzmiany="0" wartosc="0">
<opcja>pozycja grafiki</opcja>
<nazwa>1. góra lewa</nazwa>
</atrybut>
<atrybut id="169471" zmianaceny="0" typzmiany="0" wartosc="0">
<opcja>pozycja grafiki</opcja>
<nazwa>2. góra środek</nazwa>
</atrybut>
<atrybut id="169472" zmianaceny="0" typzmiany="0" wartosc="0">
<opcja>pozycja grafiki</opcja>
<nazwa>3. góra prawa</nazwa>
</atrybut>
<atrybut id="169473" zmianaceny="0" typzmiany="0" wartosc="0">
<opcja>pozycja grafiki</opcja>
<nazwa>4. środel lewa</nazwa>
</atrybut>
<atrybut id="169474" zmianaceny="0" typzmiany="0" wartosc="0">
<opcja>pozycja grafiki</opcja>
<nazwa>5. środek</nazwa>
</atrybut>
<atrybut id="169475" zmianaceny="0" typzmiany="0" wartosc="0">
<opcja>pozycja grafiki</opcja>
<nazwa>6. środek prawa</nazwa>
</atrybut>
<atrybut id="169476" zmianaceny="0" typzmiany="0" wartosc="0">
<opcja>pozycja grafiki</opcja>
<nazwa>7. dół lewa</nazwa>
</atrybut>
<atrybut id="169477" zmianaceny="0" typzmiany="0" wartosc="0">
<opcja>pozycja grafiki</opcja>
<nazwa>8. dół środek</nazwa>
</atrybut>
<atrybut id="169478" zmianaceny="0" typzmiany="0" wartosc="0">
<opcja>pozycja grafiki</opcja>
<nazwa>9. dół prawa</nazwa>
</atrybut>
<atrybut id="169479" zmianaceny="0" typzmiany="0" wartosc="0">
<opcja>pozycja grafiki</opcja>
<nazwa>10. cała tablica</nazwa>
</atrybut>
<atrybut id="233670" zmianaceny="0" typzmiany="0" wartosc="0">
<opcja>podłoże</opcja>
<nazwa>"samoprzylepne</nazwa>
</atrybut>
<atrybut id="233671" zmianaceny="1" typzmiany="1" wartosc="120">
<opcja>podłoże</opcja>
<nazwa>5mm PCV (nie większa niż 130 x 200 cm)</nazwa>
</atrybut>
</atrybuty>
<obrazki>
<obraz id="5388" src="tablica-suchoscieralna-z_5388" />
<obraz id="5389" src="tablica-suchoscieralna-z_5389" />
<obraz id="5390" src="tablica-suchoscieralna-z_5390" />
<obraz id="5391" src="tablica-suchoscieralna-z_5391" />
<obraz id="5392" src="tablica-suchoscieralna-z_5392" />
<obraz id="5393" src="tablica-suchoscieralna-z_5393" />
</obrazki>
</produkt>

Offline

 

#2  2013-12-03 18:00:13

  enether - wiecznie niewyspany

enether
wiecznie niewyspany
Zarejestrowany: 2012-05-01

Re: dane z xml-a

Perl i XML::Parser albo Python i BeautifulSoup

Offline

 

#3  2013-12-03 18:48:11

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/random
Zarejestrowany: 2008-01-07

Re: dane z xml-a

enether napisał(-a):

Perl i XML::Parser albo Python i BeautifulSoup

Pewnie można też w C/C++ używając biblioteki libxml2, ale najpierw radziłbym zdecydować, gdzie i do czego te dane będą wyciągane, np pakowanie ich do skryptu php może oznaczać, że warto porzeźbić w samym php.

Nie znam języka programowania, który nie miałby jednej lub kilku bibliotek do XMLi.

PS.
W Perlu podobno najszybszy jest XML::libXML, za to najłatwiejszy jest XML::Simple.

Pozdro
;-)

Ostatnio edytowany przez Jacekalex (2013-12-03 19:02:49)


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#4  2013-12-03 19:09:41

  azhag - Admin łajza

azhag
Admin łajza
Skąd: Warszawa
Zarejestrowany: 2005-11-15

Re: dane z xml-a


Błogosławieni, którzy czynią FAQ.
opencaching :: debian sources.list :: coś jakby blog :: polski portal debiana :: linux user #403712

Offline

 

#5  2013-12-03 19:46:25

  hello_world - Członek DUG

hello_world
Członek DUG
Skąd: Rymanów Zdrój
Zarejestrowany: 2010-06-03
Serwis

Re: dane z xml-a

Źle mnie zrozumieliście. Chodzi mi o zwyczajne pocięcie pliku na tyle plików ile jest katagorii.
nie potzrebuje parsować danych z tego pliku.
Załózmy że jest 10 kategorii w tym jednym pliku. Teraz chcę tak pociąć plik aby jak okaże się że produkt należy do kategorii X dopisywał sie do pliku X.xml (czyli cała struktura xmla dla tego produktu) itd.

Offline

 

#6  2013-12-03 19:57:47

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/random
Zarejestrowany: 2008-01-07

Re: dane z xml-a

Chyba jednak parsowanie Cię nie minie, jak inaczej chcesz wyciągnąć te kategorie, bez zagłębiania się w drzewo pliku xml?


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#7  2013-12-03 20:00:15

  hello_world - Członek DUG

hello_world
Członek DUG
Skąd: Rymanów Zdrój
Zarejestrowany: 2010-06-03
Serwis

Re: dane z xml-a

Tak na prosto to chciałbym wyciągnąć linie od <produkt*> do lini </produkt>
łącznie z nimi.
Potem jak już byłby pliki zrobiłbym prosty warunek że jak w danym pliku jest kategoria X to dopisz do pliku X.xml
Najtrudniej mi wyciąć te linie

Ostatnio edytowany przez hello_world (2013-12-03 20:02:29)

Offline

 

#8  2013-12-03 20:02:10

  azhag - Admin łajza

azhag
Admin łajza
Skąd: Warszawa
Zarejestrowany: 2005-11-15

Re: dane z xml-a

xml2, parsowanie czymkolwiek, 2xml?


Błogosławieni, którzy czynią FAQ.
opencaching :: debian sources.list :: coś jakby blog :: polski portal debiana :: linux user #403712

Offline

 

#9  2013-12-03 20:24:53

  hello_world - Członek DUG

hello_world
Członek DUG
Skąd: Rymanów Zdrój
Zarejestrowany: 2010-06-03
Serwis

Re: dane z xml-a

Chodziło mi o to:
Tutaj pokazałem na atrybutach ale docelowo bedzie to na <produkt>

Kod:

sed -n '/<atrybuty>/,/<\/atrybuty>/p' plik.xml

Teraz jak kolejny taki blok zapisac w plikach?

Ostatnio edytowany przez hello_world (2013-12-03 20:30:16)

Offline

 

#10  2013-12-04 17:49:16

  prosze - Użytkownik

prosze
Użytkownik
Zarejestrowany: 2012-09-25

Re: dane z xml-a

Po pierwsze to podaj cały plik, który chcesz przetworzyć, a po drugie to podaj fragment oczekiwango wyniku. Na pewno można to zrobić w awk.

Ostatnio edytowany przez prosze (2013-12-04 17:49:52)

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
Nas ludzie lubią po prostu, a nie klikając w przyciski ;-)