Avatar billede apo Praktikant
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.
Avatar billede apo Praktikant
18. marts 2007 - 17:23 #1
Sig endelig til, hvis jeg ikke har forklaret det godt nok :o)
Avatar billede lifo Nybegynder
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
Avatar billede apo Praktikant
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)
Avatar billede apo Praktikant
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"/>)
Avatar billede apo Praktikant
19. marts 2007 - 13:33 #5
Ingen forslag?
Avatar billede kalp Novice
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;
    }
Avatar billede kalp Novice
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
Avatar billede apo Praktikant
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)
Avatar billede apo Praktikant
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.
Avatar billede kalp Novice
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.
Avatar billede apo Praktikant
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.
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

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