[php & xml] Parsen van bestand incl query string ?

Pagina: 1
Acties:

  • r0bert
  • Registratie: September 2001
  • Laatst online: 11-08 16:19
Ik was eventjes wat aan het vogelen met PHP (en js) en xml..
Nu heb ik een prachtig PHP bestandje gemaakt, die data uit een mySQL database trekt en die in een string zet als XMLdata (en echo't). Zolang mijn computer nog online is:

http://62.131.154.4:2002/...ms/getXml.php?varKlas=v5a
http://62.131.154.4:2002/....php?varKlas=v5a&intDag=1
(check bron)

Nu had ik eerst geprobeerd dmv JS:
PHP:
1
2
3
4
5
6
function LoadXML(sXML) {
    objXmlDoc = new ActiveXObject("Microsoft.XMLDOM"); 
    objXmlDoc.async = false;
    objXmlDoc.load(sXML);
}
LoadXML("./getXml.php?varKlas=v5a&intDag=1");

en dat soort geintjes :) maar dat wil dus niet egt, dus ben nu eens op zoek gegaan via google en toen kwam ik zoiets tegen:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
$file = "./getXml.php?varKlas=v5a";

$xml_parser = xml_parser_create();

if (!($fp = fopen($file, "r")))
{
    die("Cannot locate XML data file: $file");
}

// read and parse data
while ($data = fread($fp, 4096))
{
    // error handler
    if (!xml_parse($xml_parser, $data, feof($fp)))
    {
    die(sprintf("XML error: %s at line %d",
xml_error_string(xml_get_error_code($xml_parser)),
xml_get_current_line_number($xml_parser)));
    }
}


Maar ik krijg bij beiden manieren de melding dat ie 't bestand niet kan vinden. Denk dat dat door de query-string komt, maar weet niet hoe ik het anders op kan lossen. Kan iemand me een eindje op weg helpen ?

ps. search werrukt voor geen meter..

  • djc
  • Registratie: December 2001
  • Laatst online: 08-09-2025

djc

Volgens mij moeten parameters via ?bla=mompel wel kunnen, die gebruik ik ook. Let er wel op dat allow_url_fopen (en misschien ook safe_mode) in je php.ini het gebruik van externe bestanden toelaten (als je je XML probeert te openen via een http:// url tenminste).

Let er wel op dat je nog handlers moet definieren, anders is het parsen niet zo nuttig. :D

Rustacean


  • r0bert
  • Registratie: September 2001
  • Laatst online: 11-08 16:19
Ok, zal er vanavond mee aan de slag gaan! tnx

Verwijderd

r0bert schreef op 19 augustus 2002 @ 21:08:
PHP:
1
2
3
4
5
6
7
8
9
10
while ($data = fread($fp, 4096))
{
    // error handler
    if (!xml_parse($xml_parser, $data, feof($fp)))
    {
    die(sprintf("XML error: %s at line %d",
xml_error_string(xml_get_error_code($xml_parser)),
xml_get_current_line_number($xml_parser)));
    }
}
Ik denk dat dit fout gaat zodra je XML bestand groter is dan 4k, dan loop je het risico dat je buffer halverwege een xml element stopt en dat gaat natuurlijk niet goed ;)

  • djc
  • Registratie: December 2001
  • Laatst online: 08-09-2025

djc

Oftewel, lees eerst het hele bestand in voor je het probeert te parsen.

Bijvoorbeeld zo.

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
function getFile($fn) {
    $f = @fopen($fn, "r");
    
    if ($f) {
        $src = "";
        while (!feof($f))
            $src .= fread($f, 1024);
        fclose($f);
    } else {
        $src = FALSE;
    }
    
    return $src;
}

Rustacean