18. marts 2007 - 16:11
Der er
9 kommentarer og 2 løsninger
Hent data fra XML-fil via ID
Hej :o) Hvordan kan jeg bedst, og lettest, hente data fra en XML-fil ind i en .aspx-side, via et ID i en URL? URL'en ser f.eks. således ud: /min-fil-4.aspx (hvor '4' er ID'et, som fortæller, at XML-filen med data hedder '4.xml') XML-filen: <?xml version='1.0' encoding="iso-8859-1"?> <fil> <indhold> <data1>Overskrift</data1> <data2>Nyhed</data2> </indhold> </fil> Jeg har brug for et eksempel skrevet i VB, tak.
Annonceindlæg fra Cepheo
18. marts 2007 - 17:23
#1
Sig endelig til, hvis jeg ikke har forklaret det godt nok :o)
18. marts 2007 - 17:29
#2
Tror at det er en dum måde at gøre det på
du bliver jo nødt til at lave en aspx fil for hver fil
lav helelr en side og sæt dit id i querystringen
noget ala /min-fil.aspx?id=4
så henter du dit id gennem querystringen
Dim id as String
id = Request.QueryString("id")
vil nok anbefalle at bruge en XmlDataSource til at hente data med
se
http://quickstarts.asp.net/QuickStartv20/aspnet/doc/ctrlref/data/xmldatasource.aspx
18. marts 2007 - 17:32
#3
Man kan vel nøjes med at have en enkelt .aspx-fil, som så (via ID'et i URL'en) henter en XML-fil med det tilsvarende nummer? Det kan lade sig gøre med ASP classic, men jeg ved bare ikke hvordan jeg gør det med ASP.net :o)
18. marts 2007 - 17:45
#4
I øvrigt er det vigtigt, at der ikke bruges querystrings - men at URL'en derimod ser således ud: www.mitdomæne.dk/min-fil-4.aspx Lidt supplerende forklaring: Det jeg har brug for, er en måde til at udskille ID-nummeret før '.aspx', og bruge ID-nummeret til at bestemme hvilken XML-fil der skal indlæses på siden. Dertil har jeg behov for selv at kunne bestemme placeringen af 'Overskrift' og 'Nyhed' på siden (via <asp:label id="Overskrift"/> og <asp:label id="Nyhed"/>)
19. marts 2007 - 13:33
#5
Ingen forslag?
19. marts 2007 - 14:29
#6
hej apo, metoden ser lidt langhåret ud, men det skal du ikke bekymre dig om... den hiver blot nummeret ud af url'en. kald den med dette.. string xmlNumber = getNumber(Request.PhysicalPath); så ved du har du nummeret på den xml der skal åbnes i xmlNumber:) metoden er her... private string getNumber(string url) { char[] list = url.ToCharArray(); string theNumber = ""; bool found = false; bool done = false; for (int i = url.Length; i > 0; i--) { try { Convert.ToInt32(list[i].ToString()); theNumber += list[i]; found = true; } catch { if (found && done) { string number = string.Empty; char[] numbers = theNumber.ToCharArray(); for (int b = numbers.Length; b > 0; b--) { number += numbers[b-1]; } return number; } if (found) { done = true; } } } return theNumber; }
19. marts 2007 - 14:31
#7
som jeg sagde så er selve metoden ikke køn, men den er let at kalde så det er vel okay så. Det kan gøres simplere men min visual studio gad ikke splitte url'en op så måtte tage en mindre omvej.. har testet at den kan finde nummeret også hvis det går over flere cifre.. dvs. 1 34 445 6575 osv
19. marts 2007 - 14:39
#8
Hej qawi - Tak for forslaget, men der er flere ting der mangler. 1. Jeg er nødt til at have koden i 'VB' (da det er det eneste sprog jeg nogenlunde forstår), så jeg selv kan tilpasse den efter behov. 2. Jeg har behov for en _hel_ kode der, via ID'et i URL'en, både finder og indsætter elementer fra en XML-fil via <asp:label .../> på en .aspx-side. Således at jeg kan hente et udvalgt element fra XML-filen via <asp:label id="nyhedtitel" .../>, hvis du forstår :o)
19. marts 2007 - 14:43
#9
En bedre forklaring, måske... Jeg vil gemme nogle nyheder som XML-filer i stedet for i en database, og vil hente dem ind på den samme .aspx-side, alt efter hvilket tal der står i URL'en.
19. marts 2007 - 14:56
#10
jeg forstår godt hvad du vil opnå.. men er desværre ikke så god til VB. hvis du omskrev min metode så er det sidste du mangler blot at lave en Response.WriteFile(xmlNumber+".xml"); så tror jeg det ville fungere.. hvis ikke så har du filnavnet til filen og så der der sikkert andre alternativer.
24. marts 2007 - 15:54
#11
Nå, jeg har besluttet mig for helt at droppe ASP.Net, det tager for lang tid og er for bøvlet at komme videre med. Du får lidt points som tak for din tid.
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.