Avatar billede azs Nybegynder
15. august 2002 - 07:46 Der er 8 kommentarer og
1 løsning

DAoC og XML

Hej alle jer eksperter

Jeg har i lang tid nu siddet og leget med xml og asp men har aldrig fået noget af det til at virke. Jeg ved ik hvorfor men nu vil jeg prøve og se og i kan hjælpe mig.

Jeg spiller DAoC som så mange andre gør, og der ville jeg gerne kunne se status for min guild osv. men jeg kan ikke få det til at virke.

Derfor vil jeg høre om der er en som kan lave et script der kan læse dette.

http://www.camelot-europe.com/herald/servers/Excalibur/guilds/23.xml

der kan læses mere om dette doc på
http://www.camelot-europe.com/news/xml_info.php?id_article=174

Håber der er en der kan hjælpe mig for mit vil ikke virke.
Avatar billede Slettet bruger
15. august 2002 - 11:03 #1
Det er lidt svært at se hvor meget info du vil have hevet ud af XML-dokumentet, men jeg har lavet et lille eksempel, du kan gå ud fra:

<%
Dim objXMLHTTP, objXMLDOM

'Opretter en instans af Microsoft.XMLHTTP, så det er muligt at få fat på dokumentet
Set objXMLHTTP = Server.CreateObject("Microsoft.XMLHTTP")

'Opretter en instans af Microsofts XML-parser, XMLDOM
Set objXMLDOM = Server.CreateObject("Microsoft.XMLDOM")

'Opretter forbindelse til xml-dokumentet
Call objXMLHTTP.Open("GET", "http://www.camelot-europe.com/herald/servers/Excalibur/guilds/23.xml", False)

objXMLHTTP.Send

'Lægger indholdet af dokumentet over i vores XML-parser objekt
Set objXMLDOM = objXMLHTTP.ResponseXML

' Henter alle character-elementer ud
Set characters = objXMLDOM.getElementsByTagName("character")

'Løber igennem alle characterd, og udskriver dem
'Attributter hentes med getAttribute("attributnavn")
'Nodes hentes med selectSingleNode("nodenavn").Text
For i = 0 To characters.length - 1

    set character = characters(i)

    Response.Write("Name: " & character.getAttribute("name") & "<br>")
    Response.Write("Last on: " & character.getAttribute("laston") & "<br>")
    Response.Write("Race: " & character.selectSingleNode("race").Text & "<br>")
    Response.Write("Class: " & character.selectSingleNode("class").Text & "<br>")
    Response.Write("Level: " & character.selectSingleNode("level").Text & "<br>")
   
    Set character = Nothing
   
Next

Set characters = Nothing
Set objXMLHTTP = Nothing
Set objXMLDOM = Nothing

%>

Eksemplet hiver nogle nodes og attributter ud af "character"-delen af XML-dokumentet, og burde give dig en god indsigt i hvordan dette gøres. Ellers må du bare spørge  :)

/Martin Sommer
www.magik.dk
Avatar billede azs Nybegynder
16. august 2002 - 11:11 #2
Det der virker meget godt men hvordan kan man så læse dette

- <top type="fletching">
  <top_char name="Emilx" point="1" />
  </top>
- <top type="weaponcraft">
  <top_char name="Emilx" point="1" />
  </top>
- <top type="armorcraft">
  <top_char name="Emilx" point="1" />
  </top>
- <top type="tailoring">
  <top_char name="Emilx" point="1" />
  </top>

så de forskellige ting bliver udskrevet for sig selv. altså fletching weaponcraft osv...
Avatar billede Slettet bruger
16. august 2002 - 11:20 #3
Har lige flettet det sammen med det første, men du kan se det i den sidste del:

<%
Dim objXMLHTTP, objXMLDOM

'Opretter en instans af Microsoft.XMLHTTP, så det er muligt at få fat på dokumentet
Set objXMLHTTP = Server.CreateObject("Microsoft.XMLHTTP")

'Opretter en instans af Microsofts XML-parser, XMLDOM
Set objXMLDOM = Server.CreateObject("Microsoft.XMLDOM")

'Opretter forbindelse til xml-dokumentet
Call objXMLHTTP.Open("GET", "http://www.camelot-europe.com/herald/servers/Excalibur/guilds/23.xml", False)

objXMLHTTP.Send

'Lægger indholdet af dokumentet over i vores XML-parser objekt
Set objXMLDOM = objXMLHTTP.ResponseXML

' Henter alle character-elementer ud
Set characters = objXMLDOM.getElementsByTagName("character")

'Løber igennem alle characterd, og udskriver dem
'Attributter hentes med getAttribute("attributnavn")
'Nodes hentes med selectSingleNode("nodenavn").Text
For i = 0 To characters.length - 1

    set character = characters(i)

    Response.Write("Name: " & character.getAttribute("name") & "<br>")
    Response.Write("Last on: " & character.getAttribute("laston") & "<br>")
    Response.Write("Race: " & character.selectSingleNode("race").Text & "<br>")
    Response.Write("Class: " & character.selectSingleNode("class").Text & "<br>")
    Response.Write("Level: " & character.selectSingleNode("level").Text & "<br>")
   
    Set character = Nothing
   
Next

' Henter alle top-elementer ud
Set tops = objXMLDOM.getElementsByTagName("top")

For i = 0 To tops.length - 1

    set top = tops(i)

    Response.Write("Type: " & top.getAttribute("type") & "<br>")
    Response.Write("Name: " & top.selectSingleNode("top_char").getAttribute("name") & "<br>")
    Response.Write("Point: " & top.selectSingleNode("top_char").getAttribute("point") & "<br>")

    Set top = Nothing
   
Next

Set tops = Nothing
Set characters = Nothing
Set objXMLHTTP = Nothing
Set objXMLDOM = Nothing

%>

Se evt. MSXML-reference for mere information om metoder og properties:

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/xmlsdk30/htm/xmmscxmlreference.asp

/Martin Sommer
www.magik.dk
Avatar billede azs Nybegynder
16. august 2002 - 11:35 #4
sådan kunne jeg os få det udskrevet =)

jeg mente nu hvor man kunne få de udskrevet noget ala dette

Fletching
Name: Emilx
Point: 1

Weaponcraft
Name: Emilx
Point: 1

osv..
Avatar billede Slettet bruger
16. august 2002 - 11:42 #5
Aah. Det bestemmer du jo selv. Du kan jo bare lave om i den formatering af dataene jeg har lavet. Dog skal vi have lavet en lille funktion for at få skrevet første bogstav i "type" med stort. Eks.:

For i = 0 To tops.length - 1

    set top = tops(i)

    Response.Write(FirstUpper(top.getAttribute("type")) & "<br>")
    Response.Write("Name: " & top.selectSingleNode("top_char").getAttribute("name") & "<br>")
    Response.Write("Point: " & top.selectSingleNode("top_char").getAttribute("point") & "<br>")

    Set top = Nothing
   
Next

Public Function FirstUpper(ByVal strText)
    FirstUpper = UCase(Left(strText, 1)) & Mid(strText, 2)
End Function

/Martin Sommer
Avatar billede azs Nybegynder
16. august 2002 - 12:17 #6
lige en ting til

hvis der er flere der er under en af "tops'ne" bliver der kun udskrevet en person. jeg ville godt have at den kunne udskrive alle personer

check dette link så ved du nok hvad jeg mener
http://www.camelot-europe.com/herald/servers/Excalibur/guilds/26.xml
Avatar billede Slettet bruger
16. august 2002 - 12:41 #7
Så prøver vi igen  :)

For i = 0 To tops.length - 1

    set top = tops(i)

    Response.Write(FirstUpper(top.getAttribute("type")) & "<br>")
   
    Set top_chars = top.selectNodes("top_char")
   
    For t = 0 To top_chars.length - 1
   
        Response.Write("Name: " & top_chars(t).getAttribute("name") & "<br>")
        Response.Write("Point: " & top_chars(t).getAttribute("point") & "<br>")
   
    Next 
   
    Response.Write("<br>")

    Set top = Nothing
    Set top_chars = Nothing
   
Next

Det skal bare sættes ind i stedet for det jeg skrev i sidste indlæg  :)

/Martin Sommer
Avatar billede azs Nybegynder
16. august 2002 - 12:44 #8
nice det virker nu =)

tak for hjælpen, det var lige hvad jeg manglede men jeg forstår stadig ikke hvorfor det jeg selv havde lavet ikke virker. men det er os et feeed nu =)
Avatar billede Slettet bruger
16. august 2002 - 13:25 #9
selv tak  :)
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