webForumDet fria alternativet

Läsa från XML-fil.

ASP

3 svar · 438 visningar · startad av Fredde Mannen

Medlem sedan nov. 20014 054 inlägg
Frågan#1

Jag vet att man kan använda ett visst server objekt för att läsa från filer på andra serverar och så vidare!

Jag har 2 xml-filer som är uppbyggd på följande sett typ:

sv.xml

<LANGAUGE>
<BUTTON value="LINK_HEM">HEM</BUTTON>
<BUTTON value="LINK_OMOSS">OM OSS</BUTTON>
<BUTTON value="LINK_LANKAR">L&Auml;NKAR</BUTTON>
<BUTTON value="LINK_GASTBOK">G&Auml;STBOK</BUTTON>
... osv...
</LANGAUGE>

en.xml

<LANGAUGE>
<BUTTON value="LINK_HEM">HOME</BUTTON>
<BUTTON value="LINK_OMOSS">ABOUT US</BUTTON>
<BUTTON value="LINK_LANKAR">LINKS</BUTTON>
<BUTTON value="LINK_GASTBOK">GUESTBOOK</BUTTON>
... osv...
</LANGAUGE>

Och nu till problemet, hur skall jag bygga upp en funktion typ ser ut så här:

GetLanguageTranslation("LINK_GASTBOK")

denna skall kolla om det finns en BUTTON med value=LINK_GASTBOK och om det finns returnera den feta texten, och om den inte finns returna "No Value"
<BUTTON value="LINK_GASTBOK">GUESTBOOK</BUTTON>

Vet inte riktigt hur jag skall gå till väga, mer än att jag skall använda en Reg Exp...

Medlem sedan jan. 20032 285 inlägg
#2

Har ingen aning om det här är det smartaste sättet att göra det på, kan inte mycket (ingenting alls) om XML i ASP. Men det funkar i alla fall, och det är väl det viktiga? ;)

Function GetLanguageTranslation(strLink, strLang)
  If strLang & "" = "" Then strLang = "en"

  'Set objHTTP = Server.CreateObject("Microsoft.XMLHTTP")
  'objHTTP.Open "GET", "http://www.sidan.com/" & strLang & ".xml", False
  'objHTTP.Send
  'strXML = objHTTP.ResponseText
  'Set objHTTP = Nothing

  Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
  Set objTS = objFSO.OpenTextFile(Server.MapPath(strLang & ".xml"))
  strXML = objTS.ReadAll
  objTS.Close : Set objTS = Nothing
  Set objFSO = Nothing 

  Set RegExp = New Regexp

  With RegExp
    .IgnoreCase = True
    .Global = False
    .Pattern = "<BUTTON value=""" & strLink & """>[^<]*</BUTTON>"

    Set objMatches = RegExp.Execute(strXML)

    For Each Match In objMatches
      strMatch = Match.Value
    Next

    Set objMatches = Nothing

    .Global = True
    .Pattern = "<[^>]*>"
    strMatch = RegExp.Replace(strMatch, "")
  End With

  Set RegExp = Nothing

  If strMatch = "" Then strMatch = "No Value"

  GetLanguageTranslation = strMatch
End Function

Sedan anropas fuktionen med GetLanguageTranslation("LINK_GASTBOK", "en"), GetLanguageTranslation("LINK_GASTBOK", "sv") eller GetLanguageTranslation("LINK_GASTBOK", "").
Sedan får du ändra på om filerna ligger på din server eller på någon annans, uppfattade inte riktigt det. :)

Medlem sedan juli 20011 084 inlägg
#3

jag tror det finns lite smidigare lösningar, sök på XML eller XMLDOM här på forumet

Medlem sedan jan. 20032 285 inlägg
#4

mozilla skrev:

jag tror det finns lite smidigare lösningar, sök på XML eller XMLDOM här på forumet

Tusan då! ;)

267 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
132 ms — deklarationer (db)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)
134 ms — ändringar (db)