Avatar billede andersthingholm Nybegynder
13. september 2004 - 21:22 Der er 7 kommentarer og
1 løsning

Læs xml

Hej,

Er der nogen, der kan hjælpe mig med at lave et script som looper igennem denne xml og echo'er landekode+kurs ud:

http://www.nationalbanken.dk/dndk/valuta.nsf/valuta.xml

VH

Anders Thingholm
Avatar billede detox Nybegynder
13. september 2004 - 22:03 #1
Fx:

<?php
$file = "http://www.nationalbanken.dk/dndk/valuta.nsf/valuta.xml";

function startElement($parser, $name, $attrs)
{
    if ($name == 'CURRENCY')
    echo "$attrs[CODE] = $attrs[RATE]<br />";
}

function endElement($parser, $name){}

$xml_parser = xml_parser_create();
xml_set_element_handler($xml_parser, "startElement", "endElement");
if (!($fp = fopen($file, "r"))) {
  die("could not open XML input");
}

while ($data = fread($fp, 4096)) {
  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)));
  }
}
xml_parser_free($xml_parser);
?>
Avatar billede detox Nybegynder
13. september 2004 - 22:08 #2
Eller:

<?php
$file = "http://www.nationalbanken.dk/dndk/valuta.nsf/valuta.xml";

function startElement($parser, $name, $attrs)
{
    if ($name == 'CURRENCY')
    foreach ($attrs as $key=>$val) {
        echo "$key = $val<br />";
    }
}

function endElement($parser, $name){echo "<br />";}

$xml_parser = xml_parser_create();
xml_set_element_handler($xml_parser, "startElement", "endElement");
if (!($fp = fopen($file, "r"))) {
  die("could not open XML input");
}

while ($data = fread($fp, 4096)) {
  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)));
  }
}
xml_parser_free($xml_parser);
?>
Avatar billede andersthingholm Nybegynder
14. september 2004 - 08:26 #3
Super, men hvad med dato'en, kan den komme med?
Avatar billede detox Nybegynder
14. september 2004 - 19:43 #4
Ja, du kan tilføje det i funktionen her:

function startElement($parser, $name, $attrs)
{
    if ($name == 'DAILYRATES')
    echo $attrs['ID'] . "<br /><br />";
    if ($name == 'CURRENCY')
    foreach ($attrs as $key=>$val) {
        echo "$key = $val<br />";
    }
}
Avatar billede detox Nybegynder
14. september 2004 - 19:44 #5
Eller på dansk:

echo date('d-m-Y', strtotime($attrs['ID'])) . "<br /><br />";
Avatar billede andersthingholm Nybegynder
14. september 2004 - 23:13 #6
Super, nu har jeg denne kode, men den vil ikke gemme rateDate - kan du hjælpe?

<?php

    mysql_pconnect(MYSQL_HOST, MYSQL_USERNAME, MYSQL_PASSWORD);
    mysql_select_db(MYSQL_DATABASE);

    $file = "http://www.nationalbanken.dk/dndk/valuta.nsf/valuta.xml";
   
    function startElement($parser, $name, $attrs) {
        if ($name == 'DAILYRATES') {
           
            global $rateDate;
            $rateDate = date('Y-m-d', strtotime($attrs['ID']));

        }
       
        if ($name == 'CURRENCY') {
            foreach ($attrs as $key=>$val) {
                if ($key == "CODE"){
                    $code = $val;
                }
                if ($key == "DESC"){
                    $desc = $val;
                }
                if ($key == "RATE"){
                    $rate = $val;
                }               

                }
           
                mysql_query("INSERT INTO currency_rates (rateDate, rateISO, rateDesc, rateAmount) values ('$rateDate', '$code', '$desc', '$rate')") or die(handleError($PHP_SELF, mysql_error()));   

            }
    }
   
    function endElement($parser, $name){
            echo "<br />";
        }
   
    $xml_parser = xml_parser_create();
   
    xml_set_element_handler($xml_parser, "startElement", "endElement");
   
    if (!($fp = fopen($file, "r"))) {
      die("could not open XML input");
    }
   
    while ($data = fread($fp, 4096)) {
      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)));
      }
    }
    xml_parser_free($xml_parser);
   
    $timeNow = date("Y-m-d H:i:s");
    mysql_query("INSERT INTO currency_updates (updateDate, updateDesc) values ('$timeNow', 'Update sucessful')") or die(handleError($PHP_SELF, mysql_error()));   

?>
Avatar billede detox Nybegynder
14. september 2004 - 23:35 #7
Prøv sådan:

<?php

    mysql_pconnect(MYSQL_HOST, MYSQL_USERNAME, MYSQL_PASSWORD);
    mysql_select_db(MYSQL_DATABASE);

    $file = "http://www.nationalbanken.dk/dndk/valuta.nsf/valuta.xml";
   
    function startElement($parser, $name, $attrs) {
        global $rateDate;
        if ($name == 'DAILYRATES') {
            $rateDate = $attrs['ID'];
        } elseif ($name == 'CURRENCY') {
            $code = $attrs["CODE"];
            $desc = $attrs["DESC"];
            $rate = $attrs["RATE"];
        mysql_query("INSERT INTO currency_rates (rateDate, rateISO, rateDesc, rateAmount) values ('$rateDate', '$code', '$desc', '$rate')") or die(handleError($PHP_SELF, mysql_error()));
        } 
    }
   
    function endElement($parser, $name){
            echo "<br />";
        }
   
    $xml_parser = xml_parser_create();
   
    xml_set_element_handler($xml_parser, "startElement", "endElement");
   
    if (!($fp = fopen($file, "r"))) {
      die("could not open XML input");
    }
   
    while ($data = fread($fp, 4096)) {
      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)));
      }
    }
    xml_parser_free($xml_parser);
   
    $timeNow = date("Y-m-d H:i:s");
    mysql_query("INSERT INTO currency_updates (updateDate, updateDesc) values ('$timeNow', 'Update sucessful')") or die(handleError($PHP_SELF, mysql_error()));   
?>
Avatar billede andersthingholm Nybegynder
14. september 2004 - 23:44 #8
Smukt, det virker.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester