Avatar billede toppus Nybegynder
12. juli 2003 - 02:44 Der er 11 kommentarer og
1 løsning

XML til asp

Har denne xml fil og vil hente den ind fra andet site men kan ikke få det til at virke  Hvad er der galt??

<?xml version="1.0" encoding="iso-8859-1" ?>
- <qstat>
- <server type="MAS" address="xxx.xxx.xxx.xxx" status="UP">
  <hostname>313.250.51.70</hostname>
  <nameTeam-Based server </name>
  <gametype>Team-Match</gametype>
  <map>mp_verschneit_dm</map>
  <numplayers>12</numplayers>
  <maxplayers>12</maxplayers>
  <ping>78</ping>
  <retries>0</retries>
- <rules>
  <rule name="location">1</rule>
  <rule name="gamever">2.15</rule>
  <rule name="gamename">mohaas</rule>
  <rule name="pure">0</rule>
  <rule name="realism">1</rule>
  <rule name="sprinton">0</rule>
  <rule name="dedicated">1</rule>
  <rule name="gametype_i">2</rule>
  <rule name="gamemode">openplaying</rule>
  <rule name="gametype">Team-Match</rule>
  <rule name="hostport">12203</rule>
  <rule name="fraglimit">0</rule>
  <rule name="timelimit">20</rule>
  </rules>
- <players>
- <player>
  <name>Player2</name>
  <score>82</score>
  <ping>53</ping>
  <team>0</team>
  <skin />
  <mesh />
  <face />
  </player>
- <player>
  <name>player1</name>
  <score>162</score>
  <ping>50</ping>
  <team>0</team>
  <skin />
  <mesh />
  <face />
  </player>
  </players>
  </server>
  </qstat>

Og så denne asp code:

<%
    Dim url, root, thisChild, txt, na
    url = "http://www.xxxx.dk/page.xml"
   
    Set objXMLDOM = Server.CreateObject("Microsoft.XMLDOM")
    Set objXMLHTTP = Server.CreateObject("Microsoft.XMLHTTP")
       
    objXMLHTTP.Open "GET", url, false
    objXMLHTTP.send
       
    Set root = objXMLDOM.getElementsByTagName("server")

    For i = 0 TO (root.length - 1)
    Set thisChild = root.server(i)
    txt = thischild.childNodes(1).text
    Set na = thischild.getElementsByTagName("name")
   
    Response.Write("<td>" & txt & "</td>")
    next
%>
Men der kommer intet på siden bare helt blank
Er ny i xml og asp
Avatar billede hoejrup Nybegynder
12. juli 2003 - 07:59 #1
<nameTeam-Based server </name> skal ændres til  <name>Team-Based server</name>

/per
Avatar billede toppus Nybegynder
12. juli 2003 - 12:30 #2
Ja men selv den lille fejl som ikke findes i det org xml fil, så det er ikke det..Fejlem må ligge i asp koden, da XML filen virker hvis den ligger ved siden af, bare lige uden XMLHTTP osv.
og lige meget hvad for et "tag" jeg prøver at få ind så viser siden ikke noget. Er der noget man skal instalere på serveren for at få det til at virke?
Avatar billede hoejrup Nybegynder
12. juli 2003 - 12:39 #3
Du har nogle underlige bindestreger i dit xml dokument.

<?xml version="1.0" encoding="iso-8859-1" ?>
<qstat>
  <server type="MAS" address="xxx.xxx.xxx.xxx" status="UP">
  <hostname>313.250.51.70</hostname>
  <name>Team-Based server</name>
  <gametype>Team-Match</gametype>
  <map>mp_verschneit_dm</map>
  <numplayers>12</numplayers>
  <maxplayers>12</maxplayers>
  <ping>78</ping>
  <retries>0</retries>
<rules>
    <rule name="location">1</rule>
    <rule name="gamever">2.15</rule>
    <rule name="gamename">mohaas</rule>
    <rule name="pure">0</rule>
    <rule name="realism">1</rule>
    <rule name="sprinton">0</rule>
    <rule name="dedicated">1</rule>
    <rule name="gametype_i">2</rule>
    <rule name="gamemode">openplaying</rule>
    <rule name="gametype">Team-Match</rule>
    <rule name="hostport">12203</rule>
    <rule name="fraglimit">0</rule>
    <rule name="timelimit">20</rule>
</rules>
<players>
  <player>
      <name>Player1</name>
      <score>162</score>
      <ping>50</ping>
      <team>0</team>
      <skin />
      <mesh />
      <face />
  </player>
  <player>
      <name>Player2</name>
      <score>82</score>
      <ping>53</ping>
      <team>0</team>
      <skin />
      <mesh />
      <face />
  </player>
</players>
</server>
</qstat>

/per
Avatar billede hoejrup Nybegynder
12. juli 2003 - 12:43 #4
Jeg er ikke ekspert i ASP, men måske kan du bruge oplysningerne her:

http://www.eksperten.dk/spm/359295

/per
Avatar billede hoejrup Nybegynder
12. juli 2003 - 12:52 #5
<%
    Set xmlDoc = Server.CreateObject("Microsoft.XMLDOM")
    xmlDoc.Async="false"
    xmlDoc.Load("note.xml")
       
    Set root = xmlDoc.getElementsByTagName("server")
    For i = 0 TO (root.length - 1)
    Set thisChild = root.server(i)
    txt = thischild.childNodes(1).text
    Set na = thischild.getElementsByTagName("name")
   
    Response.Write("<td>" & txt & "</td>")
    next
%>

/per
Avatar billede hoejrup Nybegynder
12. juli 2003 - 13:02 #6
Et godt eksempel, der passer med din opbygning af parseren: http://www.eksperten.dk/spm/246392

/per
Avatar billede toppus Nybegynder
13. juli 2003 - 16:25 #7
Sådan her har jeg fået det til at virke, MEN kan ikke finde ud af og hente Alt det som står under rules, hvad er der galt, det henter kun det første 1 tal fra location men alle de andre kan jeg ikke få den til at hente

<%
Dim objXMLHTTP, objXMLDOM
Set objXMLHTTP = Server.CreateObject("Microsoft.XMLHTTP")
Set objXMLDOM = Server.CreateObject("Microsoft.XMLDOM")
Call objXMLHTTP.Open("GET", "http://www.xxxx.dk/page.xml", False)
objXMLHTTP.Send
Set objXMLDOM = objXMLHTTP.ResponseXML
Set oplayers = objXMLDOM.getElementsByTagName("player")
For i = 0 To oplayers.length - 1
    set oplayer = oplayers(i)

    Response.Write("Name: " & oplayer.selectSingleNode("name").Text & "<br>")
    Response.Write("ping: " & oplayer.selectSingleNode("ping").Text & "<br>")
    Response.Write("score: " & oplayer.selectSingleNode("score").Text & "<br>")
       
    Set oplayer = Nothing
Next

Set oplayers = Nothing

Set orules = objXMLDOM.getElementsByTagName("rules")
For i = 0 To orules.length - 1
Set orule = orules(i)
Set orule_val = orule.selectsingleNode("rule")
Set orule_val1 = orule.selectnodes("rules")


Set orule_navn = orule.selectNodes("rule")
For t = 0 To orule_navn.length - 1
beskriv = orule_navn(t).getAttribute("name")
value = orule_val.text
   
        Response.Write(beskriv & "<br>")       
        Next
        Response.Write(orule.text & "<br>")
        Response.Write(value & "<br>")
       

        Next
       
       


Set objXMLHTTP = Nothing
Set objXMLDOM = Nothing

%>

og sådan ser det ud:


Name: player1
ping: 53
score: 82
Name: player2
ping: 50
score: 162

location
gamever
gamename
pure
realism
sprinton
dedicated
gametype_i
gamemode
gametype
hostport
fraglimit
timelimit
1  (dette er hvad jeg får ud kun dette ene som høre til under location)

Ved godt det ser roede ud men det virker da lidt :)
Avatar billede hoejrup Nybegynder
13. juli 2003 - 19:35 #8
<?xml version="1.0" encoding="iso-8859-1" ?>
<qstat>
  <server type="MAS" address="xxx.xxx.xxx.xxx" status="UP">
  <hostname>313.250.51.70</hostname>
  <name>Team-Based server</name>
  <gametype>Team-Match</gametype>
  <map>mp_verschneit_dm</map>
  <numplayers>12</numplayers>
  <maxplayers>12</maxplayers>
  <ping>78</ping>
  <retries>0</retries>
<rules>
    <rule name="location" pointer="1" />
    <rule name="gamever" pointer="2.15" />
    <rule name="gamename" pointer="mohaas" />
    <rule name="pure" pointer="0" />
    <rule name="realism" pointer="1" />
    <rule name="sprinton" pointer="0" />
    <rule name="dedicated" pointer="1" />
    <rule name="gametype_i" pointer="2" />
    <rule name="gamemode" pointer="openplaying" />
    <rule name="gametype" pointer="Team-Match" />
    <rule name="hostport" pointer="12203" />
    <rule name="fraglimit" pointer="0" />
    <rule name="timelimit" pointer="20" />
</rules>
<players>
  <player>
      <name>Player1</name>
      <score>162</score>
      <ping>50</ping>
      <team>0</team>
      <skin />
      <mesh />
      <face />
  </player>
  <player>
      <name>Player2</name>
      <score>82</score>
      <ping>53</ping>
      <team>0</team>
      <skin />
      <mesh />
      <face />
  </player>
</players>
</server>
</qstat>


<%
Dim objXMLHTTP, objXMLDOM
Set objXMLHTTP = Server.CreateObject("Microsoft.XMLHTTP")
Set objXMLDOM = Server.CreateObject("Microsoft.XMLDOM")
Call objXMLHTTP.Open("GET", "http://www.xxxx.dk/page.xml", False)
objXMLHTTP.Send
Set objXMLDOM = objXMLHTTP.ResponseXML
Set oplayers = objXMLDOM.getElementsByTagName("player")
For i = 0 To oplayers.length - 1
    set oplayer = oplayers(i)
    Response.Write("Name: " & oplayer.selectSingleNode("name").Text & "<br>")
    Response.Write("ping: " & oplayer.selectSingleNode("ping").Text & "<br>")
    Response.Write("score: " & oplayer.selectSingleNode("score").Text & "<br>")
       
    Set oplayer = Nothing
Next

Set oplayers = Nothing

Set orules = objXMLDOM.getElementsByTagName("rules")
For i = 0 To orules.length - 1
Set orule = orules(i)
Set orule_val = orule.selectsingleNode("rule")
Set orule_val1 = orule.selectnodes("rules")

Set orule_navn = orule.selectNodes("rule")
For t = 0 To orule_navn.length - 1
beskriv = orule_navn(t).getAttribute("name")
indhold = orule_navn(t).getAttribute("pointer")
   
        Response.Write(beskriv & "<br>")       
        Next
        Response.Write(orule.text & "<br>")
        Response.Write(indhold  & "<br>")
       
        Next
       
       
Set objXMLHTTP = Nothing
Set objXMLDOM = Nothing
%>

/per
Avatar billede toppus Nybegynder
13. juli 2003 - 21:27 #9
1 2.15 mohaas 0 1 0 1 2 openplaying Team-Match 12203 0 20
Det er hvad der kommer ud, men det er jo ikke til at bruge til noget da man ikke kan se hvad det høre til. Havde regnet med at man kunne noget i retning af:
location 1
gamever 2.15
gamename mohaas
pure 0
realism 1
sprinton 0
dedicated 1
gametype_i 2
OSV...

Men kan det ikke gøres så man kan få fat i en specifik f.eks "2.15"?
Smid lige et svar hoejrup  da du har svaret mig på hvordan man fik det til at virke, dette er jo bare et tillægs spørgsmål :))
Avatar billede hoejrup Nybegynder
13. juli 2003 - 23:07 #10
Prøv med

<%
Dim objXMLHTTP, objXMLDOM
Set objXMLHTTP = Server.CreateObject("Microsoft.XMLHTTP")
Set objXMLDOM = Server.CreateObject("Microsoft.XMLDOM")
Call objXMLHTTP.Open("GET", "http://www.xxxx.dk/page.xml", False)
objXMLHTTP.Send
Set objXMLDOM = objXMLHTTP.ResponseXML
Set oplayers = objXMLDOM.getElementsByTagName("player")
For i = 0 To oplayers.length - 1
    set oplayer = oplayers(i)
    Response.Write("Name: " & oplayer.selectSingleNode("name").Text & "<br>")
    Response.Write("ping: " & oplayer.selectSingleNode("ping").Text & "<br>")
    Response.Write("score: " & oplayer.selectSingleNode("score").Text & "<br>")
       
    Set oplayer = Nothing
Next
Set oplayers = Nothing
Set orules = objXMLDOM.getElementsByTagName("rules")
For i = 0 To orules.length - 1
Set orule = orules(i)
Set orule_val = orule.selectsingleNode("rule")
Set orule_val1 = orule.selectnodes("rules")
Set orule_navn = orule.selectNodes("rule")
For t = 0 To orule_navn.length - 1
beskriv = orule_navn(t).getAttribute("name")
indhold = orule_navn(t).getAttribute("pointer")
   
        Response.Write(beskriv & "<br>")
        Response.Write(indhold  & "<br>")       
        Next
        Response.Write(orule.text & "<br>")
       
        Next
       
       
Set objXMLHTTP = Nothing
Set objXMLDOM = Nothing
%>


/per
Avatar billede toppus Nybegynder
14. juli 2003 - 00:44 #11
Næ  det virkede ikke lige, men jeg fandt en anden måde at gøre det på
Set orules = objXMLDOM.documentElement
set oRules1 = orules.selectNodes("//server/rules/rule")

Response.Write("<table width=""25%"" cellspacing=""5"" cellpadding=""5"">")
For i = 0 To orules1.length - 1
Set orule = orules1(i)
beskriv = orule.getAttribute("name")
value = orule.text

          Response.Write("<tr>")
          Response.Write("<td width='200'>")
          Response.Write(beskriv)
          Response.Write("<td width='200'>")
        Response.Write(value)
        Response.write("</td>")       
        Response.Write("</tr>")
next   
        Response.Write("</table>")

Set objXMLHTTP = Nothing
Set objXMLDOM = Nothing

%>

Og det virker:) om det er den "rigtige" måde betyder ikke lige så meget ..lige nu.
Du skal ha' tak for hjælpen
Avatar billede hoejrup Nybegynder
14. juli 2003 - 09:11 #12
Velbekomme! Den rigtige måde er at lave et XLST stylesheet dokument til formateringen.

XML + XLST ------> bliver parset og formateret til xhtml.

/per
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