Wyciągnięcie z pliku xml potrzebnych informacji.

0

Witam, mam plik xml z którego muszę wypisać do innego pliku, nawet .txt id produktu oraz jego nazwę niemiecką.
Kod wygląda tak. Produktów jest kilkaset, a ja potrzebuję tylko id i nazwę, jest ktoś w stanie nakierować jak się za to zabrać ?
z góry dzięki.

<product product_id = "15409">
			<name><![CDATA[EMAMODA SUKIENKA - CZARNY - BIAŁY 5705-8]]></name>
			<name_en><![CDATA[EMAMODA DRESS - BLACK - WHITE 5705-8]]></name_en>
			<name_de><![CDATA[EMAMODA DRESS - SCHWARZ - WEISS 5705-8]]></name_de>
                        <name_ru><![CDATA[EMAMODA ПЛАТЬЕ - черный - белый 5705-8]]></name_ru>
0

Google: parse XML PHP, być może sprawdzi się tu biblioteka phpQuery (pewności nie mam, używałem tego do parsowania HTML, ale chyba miało też XML z CDATA).

Bez znajomości chociaż podstaw logiki php będzie ciężko

0

Hmm ... a jakieś inne pomysły ? Lub może jakiś przykład na którym było by się można wzorować ?

0

inne niż dobre pomysły?

złych rad nie udzielam, sorry

0

Nie napisałem że są złe. Tylko interesuję mnie jeszcze inne rozwiązania.

0

DOMDocument i getElementsByTagName() powinno wystarczyć. Jeżeli nie zabraknie pamięci ;-)

0

Tutaj mam prawie ten sam przykład. http://www.php.net/manual/en/simplexml.examples-basic.php Ale mimo to coś nie wychodzi mi nawet wyciągnięcie samego ID.

0

to może pokaż kod?

0

Tutaj jest fragmen xmla od początku do 1 produktu.

Myślałem że takie coś może wystarczy ale coś nic się pojawić nie chce.

<?php
$xml = simplexml_load_file("yournewstyle.xml");


foreach($xml->root->products->product as $v){
    
	echo $v['product_id'];
	}


?>

<?xml version="1.0" encoding="utf-8"?>
<root targetNamespace="http://yournewstyle.pl">
	<date>2014-05-26 03:02:30</date>
	<categories>
		<category category_id = "1">
			<parent>0</parent>
			<name><![CDATA[Damskie]]></name>
		</category>
		<category category_id = "2">
			<parent>0</parent>
			<name><![CDATA[Męskie]]></name>
		</category>
		<category category_id = "3">
			<parent>0</parent>
			<name><![CDATA[Dodatki]]></name>
		</category>
		<category category_id = "33">
			<parent>2</parent>
			<name><![CDATA[Koszule]]></name>
		</category>
		<category category_id = "12">
			<parent>1</parent>
			<name><![CDATA[Kurtki i Płaszcze]]></name>
		</category>
		<category category_id = "34">
			<parent>2</parent>
			<name><![CDATA[Bluzki]]></name>
		</category>
		<category category_id = "13">
			<parent>1</parent>
			<name><![CDATA[Spodnie i spodenki]]></name>
		</category>
		<category category_id = "51">
			<parent>2</parent>
			<name><![CDATA[Długi rękaw]]></name>
		</category>
		<category category_id = "15">
			<parent>1</parent>
			<name><![CDATA[Sukienki ]]></name>
		</category>
		<category category_id = "52">
			<parent>2</parent>
			<name><![CDATA[Spodnie, spodenki]]></name>
		</category>
		<category category_id = "16">
			<parent>1</parent>
			<name><![CDATA[Swetry]]></name>
		</category>
		<category category_id = "55">
			<parent>2</parent>
			<name><![CDATA[Swetry]]></name>
		</category>
		<category category_id = "17">
			<parent>1</parent>
			<name><![CDATA[Topy]]></name>
		</category>
		<category category_id = "50">
			<parent>3</parent>
			<name><![CDATA[Szale]]></name>
		</category>
		<category category_id = "18">
			<parent>1</parent>
			<name><![CDATA[Tuniki]]></name>
		</category>
		<category category_id = "19">
			<parent>1</parent>
			<name><![CDATA[Obuwie]]></name>
		</category>
		<category category_id = "20">
			<parent>1</parent>
			<name><![CDATA[Komplety]]></name>
		</category>
		<category category_id = "23">
			<parent>1</parent>
			<name><![CDATA[Spódniczki]]></name>
		</category>
		<category category_id = "24">
			<parent>1</parent>
			<name><![CDATA[Koszule]]></name>
		</category>
		<category category_id = "27">
			<parent>1</parent>
			<name><![CDATA[Bluzki]]></name>
		</category>
		<category category_id = "28">
			<parent>1</parent>
			<name><![CDATA[Dodatki]]></name>
		</category>
		<category category_id = "30">
			<parent>1</parent>
			<name><![CDATA[Stroje kąpielowe]]></name>
		</category>
		<category category_id = "35">
			<parent>1</parent>
			<name><![CDATA[Marynarki i żakiety]]></name>
		</category>
	</categories>
	<products>
		<product product_id = "15409">
			<name><![CDATA[EMAMODA SUKIENKA - CZARNY - BIAŁY 5705-8]]></name>
			<name_en><![CDATA[EMAMODA DRESS - BLACK - WHITE 5705-8]]></name_en>
			<name_de><![CDATA[EMAMODA DRESS - SCHWARZ - WEISS 5705-8]]></name_de>
                        <name_ru><![CDATA[EMAMODA ПЛАТЬЕ - черный - белый 5705-8]]></name_ru>
			<description><![CDATA[Szyfonowa sukienka z koronką<br /><p>
	<img alt="" src="http://www.yournewstyle.pl/grafika/wymiary/emamoda2.gif" /></p><br /><iframe width="400" frameborder="no" src="http://www.youtube.com/embed/yH4UPXFsu-Y?rel=1&amp;autoplay=1"></iframe>]]></description>
			<description_en><![CDATA[Chiffon dress with lace<br /><p>
	<img alt="" src="http://www.yournewstyle.pl/grafika/wymiary/emamoda2.gif" /></p><br /><iframe width="400" frameborder="no" src="http://www.youtube.com/embed/yH4UPXFsu-Y?rel=1&amp;autoplay=1"></iframe>]]></description_en>
			<description_de><![CDATA[Chiffon-Kleid mit Spitze<br /><p>
	<img alt="" src="http://www.yournewstyle.pl/grafika/wymiary/emamoda2.gif" /></p><br /><iframe width="400" frameborder="no" src="http://www.youtube.com/embed/yH4UPXFsu-Y?rel=1&amp;autoplay=1"></iframe>]]></description_de>
                        <description_ru><![CDATA[Шифон платье с кружевом<br /><p>
	<img alt="" src="http://www.yournewstyle.pl/grafika/wymiary/emamoda2.gif" /></p><br /><iframe width="400" frameborder="no" src="http://www.youtube.com/embed/yH4UPXFsu-Y?rel=1&amp;autoplay=1"></iframe>]]></description_ru>
			

5705-8
<producer_code>Y593</producer_code>
<type>f</type>
<producer>Emamoda</producer>
<photos>
<photo>http://yournewstyle.pl/files/clothes/big/b93c898bbb07f29b19eca41ea7e0fbf1.jpg</photo>
<photo>http://yournewstyle.pl/files/clothes/big/cf77f3e0c0595f243e52cb1838c5769f.jpg</photo>

			<photo>http://yournewstyle.pl/files/clothes/big/64c2c591dc85e668f64dd5a34cf1d6ab.jpg</photo>
			
			<photo>http://yournewstyle.pl/files/clothes/big/d3e5a098e1e3fcc2e2cf2c3f5bb02c2c.jpg</photo>
			
		</photos>
		<category_id>15</category_id>
		<category_id2>0</category_id2>
		<add_date>2014-05-05 08:39:42</add_date>
		<price_netto>61.40</price_netto>
		<sale>0</sale>
		<sale_price_netto>0.00</sale_price_netto>
		<fillup>0</fillup>
		<sizes>
			<size name="S" count="1" />
			<size name="M" count="4" />
			<size name="L" count="3" />
		</sizes>
                    <color><![CDATA[CZARNY - BIAŁY]]></color>
                    <color_en><![CDATA[BLACK - WHITE]]></color_en>
		<color_de><![CDATA[SCHWARZ - WEISS]]></color_de>
                    <color_ru><![CDATA[BLACK - WHITE]]></color_ru>
                    <cloth><![CDATA[100% poliester]]></cloth>
                    <cloth_en><![CDATA[100% poliester]]></cloth_en>
		<cloth_de><![CDATA[100% poliester]]></cloth_de>
                    <cloth_ru><![CDATA[100% poliester]]></cloth_ru>
                    <price_netto_eur>15.24</price_netto_eur>
                    

	</product> 
1
$xml = simplexml_load_file("yournewstyle.xml");
var_dump($xml);

Warning: simplexml_load_file() [function.simplexml-load-file]: yournewstyle.xml parser error : Opening and ending tag mismatch: code line 112 and product in C:\htdocs\info.php on line 3

Warning: simplexml_load_file() [function.simplexml-load-file]: </product> in C:\htdocs\info.php on line 3

Warning: simplexml_load_file() [function.simplexml-load-file]: ^ in C:\htdocs\info.php on line 3

Warning: simplexml_load_file() [function.simplexml-load-file]: yournewstyle.xml parser error : Premature end of data in tag product line 99 in C:\htdocs\info.php on line 3

Warning: simplexml_load_file() [function.simplexml-load-file]: </product> in C:\htdocs\info.php on line 3

Warning: simplexml_load_file() [function.simplexml-load-file]: ^ in C:\htdocs\info.php on line 3

Warning: simplexml_load_file() [function.simplexml-load-file]: yournewstyle.xml parser error : Premature end of data in tag products line 98 in C:\htdocs\info.php on line 3

Warning: simplexml_load_file() [function.simplexml-load-file]: </product> in C:\htdocs\info.php on line 3

Warning: simplexml_load_file() [function.simplexml-load-file]: ^ in C:\htdocs\info.php on line 3

Warning: simplexml_load_file() [function.simplexml-load-file]: yournewstyle.xml parser error : Premature end of data in tag root line 2 in C:\htdocs\info.php on line 3

Warning: simplexml_load_file() [function.simplexml-load-file]: </product> in C:\htdocs\info.php on line 3

Warning: simplexml_load_file() [function.simplexml-load-file]: ^ in C:\htdocs\info.php on line 3

bool(false)

edit: znajdź coś co poradzi sobie z nieprawidłowym XML-em (phpQuery? nie marudź tylko próbuj)

0

Widzę to co wstawiłeś to błędy tylko w 3 linii.

1

To są błędy w twoim XML-u - w linii 112 masz <code>5705-8, który nie ma znacznika zamykającego (a może to błąd forum, bo /code nie jest tak prosto wstawić?). Nie ma też oczywiście </products></root> na końcu.

A co do kodu PHP - zmień sobie $xml->root->products->product na $xml->products->product i będzie działać.

0

Tak znacznik zamykający

 wywaliłem bo wtedy obcinało kod.
0
Ktos napisał(a):

To są błędy w twoim XML-u - w linii 112 masz <code>5705-8, który nie ma znacznika zamykającego (a może to błąd forum, bo /code nie jest tak prosto wstawić?). Nie ma też oczywiście </products></root> na końcu.

A co do kodu PHP - zmień sobie $xml->root->products->product na $xml->products->product i będzie działać.

Dzięki wielkie śmiga :)

0

Ok wielkie dzięki za pomoc, osiągnąłem co chciałem :)

0

Dzięki wielkie za pomoc, osiągnąłem to co chciałem.

Teraz próbuję wyciągnąć zawartość z pomiędzy tagów za pomocą samego simplexmla jak jest pokazane tutaj.
http://www.php.net/manual/en/simplexml.examples-basic.php

Mój xml ma taką zawartość

<?xml version='1.0' standalone='yes'?>
<movies>
 <movie>
  <title>PHP: Behind the Parser</title>
  <characters>
   <character>
    <name>Ms. Coder</name>
    <actor>Onlivia Actora</actor>
   </character>
   <character>
    <name>Mr. Coder</name>
    <actor>El ActÓr</actor>
   </character>
  </characters>
  <plot>
   So, this language. It's like, a programming language. Or is it a
   scripting language? All is revealed in this thrilling horror spoof
   of a documentary.
  </plot>
  <great-lines>
   <line>PHP solves all my web problems</line>
  </great-lines>
  <rating type="thumbs">7</rating>
  <rating type="stars">5</rating>
 </movie>
</movies>

Mój kod to

<?php
 
$xml = simplexml_load_file('test.xml');
 
 
$movies = new SimpleXMLElement($xml);
 
 
echo $movies->movie->plot;
 
 
?>

Napisze mi ktoś co robię źle ? Nic się nie pokazuje.

0

Włącz sobie pokazywanie błędów w PHP, czy coś takiego.

PHP Warning:  SimpleXMLElement::__construct(): Entity: line 3: parser error : Start tag expected, '<' not found in E:\Marcin\Temp\test.php on line 6

Warning: SimpleXMLElement::__construct(): Entity: line 3: parser error : Start tag expected, '<' not found in E:\Marcin\Temp\test.php on line 6
PHP Warning:  SimpleXMLElement::__construct():  in E:\Marcin\Temp\test.php on line 6

Warning: SimpleXMLElement::__construct():  in E:\Marcin\Temp\test.php on line 6
PHP Warning:  SimpleXMLElement::__construct(): ^ in E:\Marcin\Temp\test.php on line 6

Warning: SimpleXMLElement::__construct(): ^ in E:\Marcin\Temp\test.php on line 6
PHP Fatal error:  Uncaught exception 'Exception' with message 'String could not be parsed as XML' in E:\Marcin\Temp\test.php:6
Stack trace:
#0 E:\Marcin\Temp\test.php(6): SimpleXMLElement->__construct('? ?')
#1 {main}
  thrown in E:\Marcin\Temp\test.php on line 6

Fatal error: Uncaught exception 'Exception' with message 'String could not be parsed as XML' in E:\Marcin\Temp\test.php:6
Stack trace:
#0 E:\Marcin\Temp\test.php(6): SimpleXMLElement->__construct('? ?')
#1 {main}
  thrown in E:\Marcin\Temp\test.php on line 6

Mówiąc bardziej po ludzku: new SimpleXMLElement() oczekuje, że w parametrze będzie string zawierający XML-a, a nie jakiś obiekt stworzony przez simplexml_load_file. Tak w sumie to simplexml_load_file od razu tworzy obiekt typu SimpleXMLElement, więc w sumie niezbyt rozumiem co próbujesz osiągnąć.

0

Chcę wyświetlić ten tekst

So, this language. It's like, a programming language. Or is it a
   scripting language? All is revealed in this thrilling horror spoof
   of a documentary.
0
Ktos napisał(a):

simplexml_load_file od razu tworzy obiekt typu SimpleXMLElement

0

ok mam

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