[PHP+XML] XML parsen via een URL?

Pagina: 1
Acties:

  • mr_wizard
  • Registratie: Februari 2003
  • Laatst online: 29-04-2025
Probleem:
Ik heb een URL van een bepaalde internetsite. Door in deze URL variablen te verwerken krijg ik een XML pagina terug, bijv http://test.nl?id=4 zou dan een XML pagina geven met alle gegevens die bij ID 4 horen. Nu heb ik een PHP script geschreven die die XML pagina aan kan. Werkt prima.
Het punt is, ik heb in de testfase die XML pagina gesaved en daarmee gaan werken. Nu wil ik de URL naar de file vervangen door de URL van de aanbieder van de service, dus http://test.nl?id=4. En dat werkt nou net niet. Ik snap wel dat in mijn script ik niet file() kan gebruiken, maar ik kan niet vinden hoe ik die remote XML pagina in een variable kan krijgen in PHP. Ideeen?!?!

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
function print_error() {
    global $parser;
    die(sprintf("XML Error: %s at line %d",
        xml_error_string($xml_get_error_code($parser)),
        xml_get_current_line_number($parser)
    ));
}

$parser = xml_parser_create();

xml_parser_set_option($parser,XML_OPTION_SKIP_WHITE,1);

xml_parser_set_option($parser,XML_OPTION_CASE_FOLDING,0);

$data = implode("",file($url));
xml_parse_into_struct($parser,$data,&$d_ar,&$i_ar) or print_error();

for($i=0; $i<count($i_ar['group']); $i++) {
  for($j=$i_ar['group'][$i]; $j<$i_ar['group'][$i+1]; $j++) {
  if($d_ar[$j]['tag'] == 'key') {
    $tdps_key = $d_ar[$j]['attributes']['value'];
  }
  elseif($d_ar[$j]['tag'] == 'id'){
    $tdps_id = $d_ar[$j]['attributes']['value'];
  }
  }

}
xml_parser_free($parser);

R&D professional


  • ludo
  • Registratie: Oktober 2000
  • Laatst online: 01-03 18:17
Je wilt dus een remote file inlezen :? Waarschijnlijk kan wat jij wilt wel met behulp van fopen :)

  • mr_wizard
  • Registratie: Februari 2003
  • Laatst online: 29-04-2025
Hmm, geen optie, het is namelijk geen file. Het is een url die een XML pagina returned. Ik ben nu bezig om uit te vinden of het met cURL gaat, maar je moet het dus niet zien als daadwerkelijk een file, dat is het niet.

R&D professional


  • Wolfboy
  • Registratie: Januari 2001
  • Niet online

Wolfboy

ubi dubium ibi libertas

hoezo is fopen geen optie?
een url die een xml pagina returned?
dan is fopen toch prima geschikt?

Blog [Stackoverflow] [LinkedIn]


  • mr_wizard
  • Registratie: Februari 2003
  • Laatst online: 29-04-2025
Nope, ik heb het nog eventjes geprobeerd:

PHP:
1
2
3
4
5
6
7
8
9
<?
 $url = "https://test.nl?id=4";
 $fh = fopen($url,"r");
 while(!feof($fh)){
 $output = htmlspecialchars(fgets($fh, 1024));
 echo ("$output<br />");
 }
 fclose($fh);
?>


en hij blijft maar laden, gebeurd dus niks

R&D professional


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

djc

Je had er wel wat eerder bij mogen vermelden dat het https betreft. :)

Dat kan wel met fopen, maar dan moet je https:// wrapper ondersteunen. Die kan je meecompileren in je PHP (>= 4.3.0), of je moet een alternatieve php4ts.dll downloaden voor Windows. Alternatief kan je proberen het bestand op te halen met curl.

Rustacean

Pagina: 1