webForumDet fria alternativet

Hämta ur xml fil där channel="2"?

ASP

7 svar · 441 visningar · startad av Bosse168

Medlem sedan nov. 20031 018 inlägg
Frågan#1

Någon som vet hur man gör för att loopa ut och hämta informationen ur en xml fil som ligger på samma server som asp sidan där channel="2"?

Så här ser innehållet i xml filen ut:

<?xml version="1.0" encoding="iso-8859-1"?>
  <channel id="1">
    <display-name>1</display-name>
  </channel>
  <channel id="2">
    <display-name>2</display-name>
  </channel>
  <channel id="3">
    <display-name>3</display-name>
  </channel>
  <programme start="20051025060000 +0100" stop="20051025093000 +0100" channel="1">
    <title>Program 1 on 1</title>
    <desc>Info..</desc>
  </programme>
  <programme start="20051025093000 +0100" stop="20051025100000 +0100" channel="1">
    <title>Program 2 on 1</title>
    <desc>Info..</desc>
  </programme>
  <programme start="20051025093000 +0100" stop="20051025143000 +0100" channel="2">
    <title>Program 1 on 2</title>
    <desc>Info..</desc>
  </programme>
  <programme start="20051025143000 +0100" stop="20051025150000 +0100" channel="2">
    <title>Program 2 on 2</title>
    <desc>Info..</desc>
  </programme>
  <programme start="20051025093000 +0100" stop="20051025143000 +0100" channel="3">
    <title>Program 1 on 3</title>
    <desc>Info..</desc>
  </programme>
  <programme start="20051025143000 +0100" stop="20051025150000 +0100" channel="3">
    <title>Program 2 on 3</title>
    <desc>Info..</desc>
  </programme>
  <programme start="20051026060000 +0100" stop="20051026093000 +0100" channel="1">
    <title>Program 1 on 1</title>
    <desc>Info..</desc>
  </programme>
  <programme start="20051026093000 +0100" stop="20051026100000 +0100" channel="1">
    <title>Program 2 on 1</title>
    <desc>Info..</desc>
  </programme>
</tv>

[edit]
Ändrade xml filen.

Medlem sedan nov. 20031 018 inlägg
#2

Den här koden funkar men jag vill slippa (om det går) att ha en If sats i loopen som går kollar om channel är = 2.

<%
Dim XMLDoc,nodeLst,nodeLst2,nodeLst3,i

Set XMLDoc = CreateObject("MSXML2.DOMDocument")
XMLDoc.setProperty "ServerHTTPRequest", true
XMLDoc.async=False

XMLDoc.Load Server.Mappath("filen.xml")

If XMLDoc.parseError.errorCode = 0 Then

Set nodeLst = XMLDoc.getElementsByTagName("programme")

For each obj in nodeLst

	Response.Write(obj.attributes.getNamedItem("channel").text &" - "& obj.selectSingleNode("title").text &".<br>")

next

Else
Response.write XMLDoc.parseError.reason
End If
%>
Medlem sedan dec. 19996 721 inlägg
#3
Set nodeLst = XMLDoc.selectNodes("//programme[@channel='2']")
Medlem sedan nov. 20031 018 inlägg
#4

[edit]
Funkar kanon.
Kan man på något sätt lägga till en datum check där också? :)

start="20051025060000 +0100"
Medlem sedan dec. 19996 721 inlägg
#5
Set nodeLst = XMLDoc.selectNodes("//programme[@channel='2' and start='20051025060000 +0100']")
Medlem sedan nov. 20031 018 inlägg
#6

emission skrev:

Set nodeLst = XMLDoc.selectNodes("//programme[@channel='2']")

Funkade kanon men nu har ett annat litet problem dykt upp (som vanligt). ;)
Jag ändrade i XML filen (se först inlägget) så att den spara in morgondagens program också. Nu när jag kör loopen så loopar den ut allt där channel är = "2", kan man inte på något sätt avsluta loopen när den loopar ut channel 2 för andra gången?

Typ så här om jag loopar igenom hela xml filen

<%
For each obj in nodeLst

	If obj.attributes.getNamedItem("channel").text = 2 Then

Response.Write(obj.attributes.getNamedItem("channel"))

	Else
'Exit loop
	End If
next
Medlem sedan dec. 19996 721 inlägg
#7

Använd selectSingleNode i stället, så får du bara en nod som svar (dvs. ingen loop behövs)

Medlem sedan nov. 20031 018 inlägg
#8

que, fattar inte hur du menar eller hur man gör. :OO

257 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
128 ms — deklarationer (db)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)
121 ms — ändringar (db)