Avatar billede kristian_h Nybegynder
03. januar 2007 - 21:50 Der er 9 kommentarer

Parse XML til HTML

Jeg vil gerne parse 5 XML-filer i en tabel på min hjemmeside.

Jeg har 5 eksterne URL'er med XMl-filer der hele tiden opdateres med børskurser. Tabellen kan fx se sådan ud:

Aktie 1    KursA1    KursB1 ... osv.
Aktie 2    KursA2    KursB2
Aktie 3    KursA3    KursB3
Aktie 4    KursA4    KursB4
Aktie 5    KursA5    KursB5

De fem xml-filer er identisk opbygget og kan hentes via kald af en URL. Filerne er på denne form:

<?xml version="1.0" encoding="UTF-8" ?>
- <root xmlns:user="urn:my-script-blocks" xmlns:msxsl="urn:schemas-microsoft-com:xslt">
  <Kurs1>123,45</Kurs1>
  <Kurs2>234,56</Kurs2>.
.
.
.
</root>

Endelig skal det hele ind i et CMS-system (Synkron) - men det klarer jeg nok selv.

Jeg har læst og forstået denne tutorial, hvor der parses via XSL: http://www.xmlfiles.com/xsl/ - men kan ikke få det til at fungere når jeg skal hente XML-filen fra en ekstern server.

Jeg vil blive glad for lidt hjælp, evt bare princippet med een fil.

pft.

K
Avatar billede janegil Nybegynder
04. januar 2007 - 09:52 #1
For å bruke eksterne kilder, skal du nok bruke en eller annen dynamisk web-server. ASP, PHP, et eller annet. Hva har du til disposisjon? (Jeg har litt erfaring med ASP, og den er temmelig kvirkete.)

Det er jo nettopp denslags et CMS burde klare selv ;o)
Avatar billede kristian_h Nybegynder
04. januar 2007 - 10:32 #2
jeg har en tilknyttet dynamisk webserver - den kan vist begge dele.
Avatar billede kristian_h Nybegynder
04. januar 2007 - 10:45 #3
den kan asp - ser jeg lige
Avatar billede janegil Nybegynder
04. januar 2007 - 12:21 #4
OK -jeg har en asp som i sin tid transformerte til WML. Det virker ikke lenger, det har noe med hvordan upcoming chunker streamen å gjøre. Men her er (alt for mye) kodeeksempel:

<% @language=javascript %><%Response.buffer = true%>
<%Response.ContentType = "text/vnd.wap.wml"%>
<%Response.Charset = "iso-8859-1"%>
<%
//Using the following document objects and texts:
var feedDoc;
var wmlStyleDoc;
var wmlText;
// feed is transformed by wmlStyle to wmlText.
// wmlText is the desired WML output, except that it contains unused
// namespaces from the transformation. These namespaces makes it invalid WML.
// Using substring function to remove the namespace.

function conditionalLoad(doc, prodURL, testURL)
{   
    var conditionalURL;
    doc.async = false;
    doc.validateOnParse = false;
    doc.setProperty("ServerHTTPRequest", true);
    if (Request.serverVariables("HTTP_HOST") =="127.0.0.1" )
        conditionalURL = testURL
    else
        conditionalURL = prodURL
    ;
    doc.load(conditionalURL)
    //Check for a successful load of the XML Document.
    if (doc.parseError.errorCode != 0)
    {
        Response.Write("<wml><card><p>Error loading: " + conditionalURL + "</p>");
        Response.Write("<p>Error Code: " + doc.parseError.errorCode + "</p>");
        Response.Write("<p>Reason : " + doc.parseError.reason + "</p></card></wml>");
        Response.End();
    };
}


//Use the MSXML 4.0 Version dependent PROGID
//MSXML2.DOMDocument.4.0 if you wish to create
//an instance of the MSXML 4.0 DOMDocument object
//MSXML 3.0 will declare the WML as UTF-16, no matter what the output from the transformation actually is.
var use3 = true;
if (use3)
{
    feedDoc = Server.CreateObject("MSXML2.DOMDocument.3.0");
    wmlStyleDoc = Server.CreateObject("MSXML2.DOMDocument.3.0");
}
else
{
    feedDoc = Server.CreateObject("MSXML2.DOMDocument.4.0");
    wmlStyleDoc = Server.CreateObject("MSXML2.DOMDocument.4.0");
}

conditionalLoad(feedDoc, "http://upcoming.org/syndicate/venue/1198/", "http://127.0.0.1/xslt/1198.xml");
conditionalLoad(wmlStyleDoc, "http://www.hsjonleik.fo/xslt/upcoming-to-wml.xslt", "http://127.0.0.1/xslt/upcoming-to-wml.xslt");
wmlText = feedDoc.transformNode(wmlStyleDoc);
// Remove the invalid namespace:
wmlText = wmlText.substring(0,100) + wmlText.substring(144);
Response.Write(wmlText);
Response.End();
%>
Avatar billede kristian_h Nybegynder
04. januar 2007 - 17:40 #5
Øv - det er for indviklet for mig :-(
Avatar billede kristian_h Nybegynder
04. januar 2007 - 20:27 #6
Fandt hjælp her: http://www.asp101.com/samples/xmlxsl_remote_aspx.asp

Dette hjælper mig dog kun til at kunne parse een url ind i en tabel, jeg vil gerne kunne hente 5 url'er ind i samme tabel - nogen der kan hjælpe med at tilrette ASP-scriptet?
Avatar billede Slettet bruger
04. januar 2007 - 22:11 #7
Du vil gerne kombinere de 5 URL'er så <root> elementet kun er med een gang, og derefter transformere det hele til eet output, ikke?

/CS
Avatar billede kristian_h Nybegynder
05. januar 2007 - 20:13 #8
Jeg er i bund og grund ligeglad med hvordan - bare det virker :-)

MEN: De fem URL'er (een pr. aktie) er opbygget på samme måde og med samme navne på de informationer jeg gerne vil vise - derfor vil en 'kombination/mix/merge' (eller hvad det hedder) af de 5 til een XML-fil IKKE være farbar vej - der vil jo da komem 5 x købskurs, 5 x salgskurs osv...

Så et nyt ASP-script eller tilretning af  http://www.asp101.com/samples/xmlxsl_remote_aspx.asp kunne være dejligt :-)
Avatar billede kristian_h Nybegynder
18. marts 2007 - 10:39 #9
Her er eksempel på feedet - se Basisdata. Husk, de fem feeds er bygget på samme læst.

http://www.ir2.omxgroup.com/demo/ir_xml.html
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
Kurser inden for grundlæggende programmering

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