Autor Zpráva
Honzap
Profil
Ahoj můžete mi prosím pomoct s tímto scriptem?
[/

<?php

$jmenosouboru="HERKULES.xml";

$parser=(xml_parser_create());

function obsluhapocatecnihotagu($parser, $nazev, $atributy) {
global $znacka;
$znacka=$nazev;

}

function obsluhakoncovehotagu($parser, $nazev) {
if(eregi($nazev, "car")) echo ("</br>");

}

xml_set_element_handler($parser, "obsluhapocatecnihotagu", "obsluhakoncovehotagu");

function znaky($parser, $data) {

global $znacka;

if ($znacka=="ID") echo "id je $data";
if ($znacka=="MANUFACTURER") echo "Značka je $data";
if ($znacka=="MODEL") echo "Model je $data";
}

xml_set_character_data_handler($parser, "znaky");

if(!($soubor=fopen($jmenosouboru, "r"))) {
die("Nelze otev&oslash;ít soubor herkules.xml!");
} else {
while ($d = fread($soubor, 4096)) {
if(!xml_parse($parser, $d, feof($soubor))) {
die("<script language="JavaScript">
window.alert('Chyba XML v souboru ".$jmenosouboru." na &oslash;ádku ".xml_get_current_line_number($parser).".\n\nKód chyby: ".xml_get_error_code($parser)."');
</script>");
}
}
}
?>

tak mi to vypíše takto
id je A33/07id je id je Značka je Mercedes-BenzZnačka je Značka je Model je Třídy EModel je Model je
id je A62/07id je id je Značka je FordZnačka je Značka je Model je MondeoModel je Model je
id je A154/07id je id je Značka je PeugeotZnačka je Značka je Model je 307Model je Model je

Proč mi to píše třikrát?
Díky moc teprve začínám v php.
Joker
Profil
A jak vypadá to XML?
Honzap
Profil
Tady je:
xml
Joker
Profil
Honzap
Není. Ale našel jsem ho tady: http://akvahonza.wz.cz/HERKULES.xml Pozor na velká/malá písmena.

Ale možná to mám: zkusil bych do obsluhy koncového tagu přidat vymazání proměnné $znacka, $znakca = ''; například.
Chamurappi
Profil
Reaguji na Honzup:
Mezery a prázdné řádky jsou podle specifikace také znaková data. Část XML parserů je ignoruje, ale ten v PHP zjevně ne. Možná to jde nějak přepnout, nevím, PHP neznám.
Takže co se (asi) děje: začne element <id>, vypíšeš „id je “ + znaková data uvnitř, následně skončí <id>, začnou nová znaková data (mezery + enter + mezery), vypíšeš „id je “ + tyhle mezery a pak teprve začne nový element, který ti změní $znacka, čímž zabrání dalšímu opakování.

<mimo-téma>
xmlns:xs="http://www.w3.org/2001/XMLSchema"
Jaký to tam má účel?
Honzap
Profil
Díky to je ono.
Na písmena dám pozor. Opravil jsem si to.
Honzap
Profil
Chamurappi
<mimo-téma>
„xmlns:xs="http://www.w3.org/2001/XMLSchema"“
Jaký to tam má účel?


To já nevím ten xml je výstup z programu co používaj na bazaru.
Honzap
Profil
Ještě mám jeden blbej dotaz.
Jak ty data uložím do databáze?

Vytvořil jsem tabulku se sloupci id, manufacturer, model

Připojil jsem se k tabulce a použil jsem toto:
   function znaky($parser, $data) {


global $znacka,$id,$manufacturer,$model;

if ($znacka=="ID") $id=$data;
if ($znacka=="MANUFACTURER") $manufacturer=$data;
if ($znacka=="MODEL") $model=$data;
if ($znacka=="car")mysql_query("INSERT INTO parser(id,manufacturer,model) VALUES('$id', '$manufacturer','$model')");

}

To mi však vloží pouze spoustu záznamů v kterých nic není.
Díky za vysvětlení
Kajman_
Profil *
Na tento xml můžu vřele doporučit simplexml, s ním byla radost ho zpracovat.

http://cz.php.net/manual/cs/ref.simplexml.php

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0