Avatar billede ingeman Seniormester
13. februar 2008 - 20:38 Der er 10 kommentarer og
1 løsning

Skal have nedenstående kode til at hente XML fra Nationalbanken

<plugin compatible="61" >

<panel 
    caption="Euro Exchange Rates"
    description="This panel displays Euro foreign exchange rates"
    icon="euro.bmp"
    category="news_cat"
    categoryIcon="basicpanels.dll,254,8"
    author="DS Team"
    email="support@desktopsidebar.com"
    homepage="http://www.desktopsidebar.com">

<canvas>
  <listoutput id="output" >
        <event id="click" action="onClick" />
  </listoutput>
</canvas>

<properties>
  <page name="General Props">
    <property name="currencies" label="Currencies" type="text" default="USD GBP PLN">
      Please enter here currencies symbols separated with spaces
    </property>
  </page>   
</properties>

<script menu="euromenu">
<![CDATA[

var fso = new ActiveXObject("Scripting.FileSystemObject");

function getTempFileName()
{
  var tfolder, tfile, tname, fname, TemporaryFolder = 2;
  var tfolder = fso.GetSpecialFolder(TemporaryFolder);
  var tname = fso.GetTempName();
  return tfolder.Path+"\\"+tname;
}

function getXmlUrl()
{
    return "http://www.ecb.int/stats/eurofxref/eurofxref-daily.xml";
}

function onLoadFinished(success, fileName, param)
{
    output.Clear();
 
    if (success)
    {
        var dict = new ActiveXObject("Scripting.Dictionary");

        var currencies=config.GetSetting("currencies");
        var ar = currencies.split(" ");
        for(var i=0;i<ar.length;++i)
        {
          dict.Add(ar[i]," ");
        }

        var errMsg;
        var xmlNode=sidebar.OpenXml(fileName,errMsg);
        if (xmlNode)
        {
          var cube=xmlNode.GetNode("Cube/Cube");
          for(var i=0;i<cube.GetChildCount();++i)
          {
            var node=cube.GetChild(i);
            var currency=node.GetAttribute("currency");
            var rate=node.GetAttribute("rate");
            if (dict.Exists(currency))
            {
              var row=output.AddRow();
              row.SetText(currency+"\t"+rate);       
            }   
          }
        }
        else
        {
          var row=output.AddRow();
          row.SetText("Cannot open xml");       
        }
       
        fso.DeleteFile(fileName);
    }
    else
    {
        var row=output.AddRow();
        row.SetText("Cannot download xml");       
    }
}

function onTick()
{
    DownloadFile(getTempFileName(), getXmlUrl(), "onLoadFinished", 0);
}

function onClick()
{
    var WshShell = new ActiveXObject("WScript.Shell");
    WshShell.Run("http://www.ecb.int/stats/exchange/eurofxref/html/index.en.html");
}

function onSettingsChanged()
{
    StopTimer();
    DownloadFile(getTempFileName(), getXmlUrl(), "onLoadFinished", 0);
    SetTimer("onTick",3*60*60,0);
}

function onShowSources()
{
  var WshShell = new ActiveXObject("WScript.Shell");
  WshShell.Run("notepad.exe "+sidebar.GetInstallDir()+"euro.dsplugin");
}

output.SetTab(0,40);
output.AddRow().SetText("Loading...");       

DownloadFile(getTempFileName(), getXmlUrl(), "onLoadFinished", 0);
SetTimer("onTick",3*60*60,0);


]]>
</script>
</panel>

<commands>
    <command name="euro.showSources" caption="Show Sources" action="onShowSources" />
</commands>

<menus>
    <menu name="euromenu">
        <option cmd="euro.showSources" />
    </menu>
</menus>

</plugin>

Nationalbankens XMl fil er på:
http://www.nationalbanken.dk/dndk/valuta.nsf/valuta.xml
Avatar billede w13 Novice
14. februar 2008 - 10:27 #1
Og det gør den ikke?
Avatar billede ingeman Seniormester
14. februar 2008 - 12:36 #2
Nej
Avatar billede w13 Novice
14. februar 2008 - 12:45 #3
Hvad gør den så?
Avatar billede ingeman Seniormester
14. februar 2008 - 12:52 #4
function onLoadFinished(success, fileName, param)
{
    output.Clear();
 
    if (success)
    {
        var dict = new ActiveXObject("Scripting.Dictionary");

        var currencies=config.GetSetting("currencies");
        var ar = currencies.split(" ");
        for(var i=0;i<ar.length;++i)
        {
          dict.Add(ar[i]," ");
        }

        var errMsg;
        var xmlNode=sidebar.OpenXml(fileName,errMsg);
        if (xmlNode)
        {
          var cube=xmlNode.GetNode("Cube/Cube");
          for(var i=0;i<cube.GetChildCount();++i)
          {
            var node=cube.GetChild(i);
            var currency=node.GetAttribute("currency");
            var rate=node.GetAttribute("rate");
            if (dict.Exists(currency))
            {
              var row=output.AddRow();
              row.SetText(currency+"\t"+rate);       
            }   
          }
        }
        else
        {
          var row=output.AddRow();
          row.SetText("Cannot open xml");       
        }
       
        fso.DeleteFile(fileName);
    }
    else
    {
        var row=output.AddRow();
        row.SetText("Cannot download xml");       
    }
}

Den her function må skulle omskrives til at modsvare hvad der står i
http://www.nationalbanken.dk/dndk/valuta.nsf/valuta.xml
Avatar billede roenving Novice
15. februar 2008 - 14:02 #5
Du kan ikke bruge ajax på tværs af domæner, så du må hente valuta-filen på din server og så sende den videre derfra !-)
Avatar billede ingeman Seniormester
15. februar 2008 - 21:19 #6
Den øverste kode fungerer med den her
http://www.ecb.int/stats/eurofxref/eurofxref-daily.xml

- men med den her får jeg ikke noget

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

hvad er forskellen ?
Avatar billede olebole Juniormester
15. februar 2008 - 22:04 #7
<ole>

Du må nok forklare, hvad det er, du er ved at lave. Hvor skal det f.eks. bruges? På en lokal PC, et intranet, WWW, eller ...?

/mvh
</bole>
Avatar billede ingeman Seniormester
15. februar 2008 - 22:21 #8
Det stammer fra et freeware program som hedder desktopsidebar på www.desktopsidebar.com

Den har nogle plugin som feks kan hente kurser i den Europæriske nationalbank - det er den kode som er ovenfor.

Men jeg skal have en kode (plugin) som henter kurser i den danske nationalbank istedet på http://www.nationalbanken.dk/dndk/valuta.nsf/valuta.xml

Det vil sige at den oprindelige kode skal redigeres til at kunne læsse kurserne i nationalbanken.

Har prøvet at ændre den her:
function getXmlUrl()
{
    return "http://www.ecb.int/stats/eurofxref/eurofxref-daily.xml";
}

men det virker ikke !

Det kører lokal på PC'en.

mvh
Avatar billede ingeman Seniormester
16. februar 2008 - 11:34 #9
<ole> er gået død ?
Avatar billede w13 Novice
24. april 2008 - 12:01 #10
Kommet videre?
Avatar billede ingeman Seniormester
19. april 2011 - 19:36 #11
lukket
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