| Autor |
Wiadomość |
masterix @Administrator

Dołączył: 05 Gru 2004 Posty: 5071 Skąd: Poznań Pomógł: 53
|
|
Witam,
Mam kod, który mi przetwarza odpowiednio plik XML: | Kod: | $xmlstr = new simpleXMLElement( 'products.xml', NULL, TRUE );
mysql_connect( 'localhost', 'root', '' );
mysql_select_db( 'zlecenia' );
foreach( $xmlstr -> product as $product )
{
$id = $product['id'];
$number = $product['number'];
$aff_prog = $product -> affiliateprogram['id'];
$name = $product -> info -> name;
$description = $product -> info -> description;
$manufacturer = $product -> info -> manufacturer;
$ship_cost = $product -> info -> shippinghandling['cost'];
$category = $product -> category -> merchant;
$deeplink = $product -> links -> deeplink;
$image_small = $product -> links -> image[0] -> url;
$image_medium = $product -> links -> image[0] -> url;
$state = $product -> state;
$date = $product -> date;
$cost = $product -> offer -> currentprice;
// itd
} | I pojedynczy element z pliku XML: | Kod: | <product id="877175458" number="57873">
<affiliateprogram id="1493" />
<info>
<name>VITAMAG + CYNK + POTAS TABLETKI DO SSANIA MALINOWE</name>
<description state="short">Preparat przeznaczony jest dla osób dorosłych jako uzupełnienie niedoborów cynku, potasu, magnezu i witaminy B6 w codziennej diecie. Cynk bierze udział w wytwarzaniu prostaglandyn regulujšcych cinienie krwi, rytm pracy serca, funkcje wydzielnicze skóry, czy poziom cholesterolu we krwi. W połšczeniu z magnezem i witaminš B6 wpływa na prawidłowe funkcjonowanie układu odpornociowego oraz przeciwdziała nadpobudliwoci i zaburzeniom koncentracji. Potas umożliwia prawidłowe funkcjonowanie układu nerwowegoi mię</description>
<manufacturer>POLFARMEX</manufacturer>
<shippinghandling cost="6.50" />
</info>
<category>
<merchant>Dieta</merchant>
</category>
<links>
<deeplink>http://ad.zanox.com/ppc/?5708908C1403250192&ULP=[[http://www.domzdrowia.pl/?nr_seller=30&productid=57873]]</deeplink>
<image state="small">
<url>http://www.domzdrowia.pl/img/73/57873.jpg</url>
</image>
<image state="medium">
<url>http://www.domzdrowia.pl/img/73/57873b.jpg</url>
</image>
</links>
<state>1</state>
<date state="update">2007-04-16T22:13:00</date>
<offer>
<currentprice currency="PLN">11.66</currentprice>
</offer>
</product> | Bólu głowy przysparza mi element <deeplink>, dostaję taki komunikat: | Cytat: | Warning: SimpleXMLElement::__construct() [function.--construct]: products.xml:15: parser error : EntityRef: expecting ';' in /home/masterix/public_html/xml2mysql.php on line 4
Warning: SimpleXMLElement::__construct() [function.--construct]: <deeplink>http://ad.zanox.com/ppc/?5708908C1403250192&ULP=[[http://www.domzdro in /home/masterix/public_html/xml2mysql.php on line 4
Warning: SimpleXMLElement::__construct() [function.--construct]: ^ in /home/masterix/public_html/xml2mysql.php on line 4
Warning: SimpleXMLElement::__construct() [function.--construct]: products.xml:15: parser error : EntityRef: expecting ';' in /home/masterix/public_html/xml2mysql.php on line 4
Warning: SimpleXMLElement::__construct() [function.--construct]: m/ppc/?5708908C1403250192&ULP=[[http://www.domzdrowia.pl/?nr_seller=30&productid in /home/masterix/public_html/xml2mysql.php on line 4
Warning: SimpleXMLElement::__construct() [function.--construct]: ^ in /home/masterix/public_html/xml2mysql.php on line 4
Fatal error: Uncaught exception 'Exception' with message 'String could not be parsed as XML' in /home/masterix/public_html/xml2mysql.php:4 Stack trace: #0 /home/masterix/public_html/xml2mysql.php(4): SimpleXMLElement->__construct('products.xml', 0, true) #1 {main} thrown in /home/masterix/public_html/xml2mysql.php on line 4 | Jednak jak wywalę tą linijkę z pliku XML to całość działą wyśmienicie... Co jest grane ? Nie jarzę jak może się nagle wysypywać cały skrypt po dodaniu jednej linijki.
pzdr.
|
|
| Powrót do góry |
|
|
reborn ~user

Dołączył: 10 Lip 2005 Posty: 1312
Pomógł: 20
|
|
Imho simpleXML nie może sobie poradzić ze sprarsowaniem tego fragmentu No chyba że występują tam jakieś błędy składniowe...
|
|
| Powrót do góry |
|
|
masterix @Administrator

Dołączył: 05 Gru 2004 Posty: 5071 Skąd: Poznań Pomógł: 53
|
|
Tylko właśnie dlaczego nie może sobie poradzić? Przeciez to jest zwykły tekst pomiędzy dwoma znacznikami tak samo jak np pomiędzy <manufacturer> i </manufacturer>
Może te 'krzaczki' w adresie mu przeszkadzają albo coś... ?
| reborn napisał: | | No chyba że występują tam jakieś błędy składniowe... |
Problem w tym, że plik jest udostępniany przez jakiś sklep i jeśli faktycznie występują ( w co wątpię ) to nie mam możliwości ingerencji w to
pzdr.
|
|
| Powrót do góry |
|
|
mrKrecik @Administrator

Dołączył: 30 Sty 2005 Posty: 1428 Skąd: czerpać siły? Pomógł: 10
|
|
A może umieść te "krzaczki" między:
|
|
| Powrót do góry |
|
|
reborn ~user

Dołączył: 10 Lip 2005 Posty: 1312
Pomógł: 20
|
|
A właśnie, to przez nie, simpleXML się gubi. A mrKrecik dobrze prawi...
|
|
| Powrót do góry |
|
|
masterix @Administrator

Dołączył: 05 Gru 2004 Posty: 5071 Skąd: Poznań Pomógł: 53
|
|
| mrKrecik napisał: | | A może umieść te "krzaczki" między: |
| masterix napisał: | | nie mam możliwości ingerencji w to |
I które dokładnie krzaczki w to wrzucić ? To ew. pobawię się preg'ami chociaż mi się to nie widzi, bo wydłuży działanie skryptu...
|
|
| Powrót do góry |
|
|
reborn ~user

Dołączył: 10 Lip 2005 Posty: 1312
Pomógł: 20
|
|
Wrzuć zawartość <deeplink> do CDATA
|
|
| Powrót do góry |
|
|
masterix @Administrator

Dołączył: 05 Gru 2004 Posty: 5071 Skąd: Poznań Pomógł: 53
|
|
Pomogło, dzięki 
|
|
| Powrót do góry |
|
|
Omen ~user

Dołączył: 12 Lis 2005 Posty: 1425 Skąd: Warszawa Pomógł: 1
|
|
---------- 12:27 23.04.2007 ----------
Ale zabawka ja zawsze robiłem wszystko przez DOM-a nie wiedziałem ze istnieje taka klasa jak SimpleXMLElement
--------
czemu ma sluzyc taki post? nie wnosi nic do ulepszenia rozwiazania, ani nie wprowadza zadnych nowych watpliwosci/pytan to nie hydepark zeby pisac bezsensowne posty. nastepnym razem del bez uprzedzania.
Chester z LPR-u
---------- 13:00 ----------
Jak to ? ze nie trzeba koniecznie korzystać z tej metody, ze mozna takze zastosowac DOM-a ale okey jak chcesz mozesz usunąć :p
_________________

Ostatnio zmieniony przez Omen dnia 24-04-07 00:39, w całości zmieniany 1 raz |
|
| Powrót do góry |
|
|
reborn ~user

Dołączył: 10 Lip 2005 Posty: 1312
Pomógł: 20
|
|
Pozwole sobie odpowiedzieć Omenowi - rozszerzenie nazywa się SimpleXML, ale jest też np. xmlwriter i xmlreader. I DOM. Więc wybór jest nie mały. EOT.
|
|
| Powrót do góry |
|
|
|