Toon posts:

[ASP] xml laden in asp probleem *

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik was even begonnen een nieuwe site te maken in asp volledig xhtml valid en waarvan de data komt uit xml bestanden.
So far so good...
Eerst even de code:
ASP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<%
Response.Buffer = True
...
Sub LaadXml(pag)
Dim xml
    Set xml = Server.CreateObject("Microsoft.XMLDOM")
    xml.async = False
    xml.load (Server.MapPath("/xml/"& pag))
Dim datumpost, poster, titel, beschrijving, afbeelding, verwantelink, stylesheet, inhoud, javascrpt
Set titel1 = xml.getElementsByTagName("titel") 
For i=0 To (titel1.length -1) 
titel=titel.item(i).text
Next
Set titel1 = xml.getElementsByTagName("inhoud") 
For i=0 To (titel1.length -1) 
inhoud=titel.item(i).text
Next
 Response.write(titel&inhoud&cstr(titel1.length)) ' toegevoegd als test om te kijken wat eruit komt -> niets :( ook titel.length = 0 ...
Set XML = Nothing
End Sub
%>

Ik ben vrij nieuw op het gebied van xml - asp (was het maar zo simpel als in asp.net ;) ) dus help een beetje plz.

Wat ik al geprobeerd heb:
Is een ander veld geselecteerd: ook niets
betere code gezocht die werkt: niet direct gevonden

Waaraan zou het kunnen liggen:
Moet ik eerst de rootnode selecteren en daarin zoeken? lijkt mij raar en onhandig...?

Hier is de xml dan zien jullie het misschien beter:
XML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?xml version="1.0" encoding="UTF-8"?>
<pagina>
<datumpost>12/08/2003 14:57</datumpost>
<poster>aspfreakout</poster>
<titel>This is a testpage</titel>
<beschrijving>This page is solely intended for testing purposes.</beschrijving>
<afbeelding>standaard.JPG</afbeelding>
<verwantelink>'ff geknipt geen spam </verwantelink>
<stylesheet></stylesheet>
<inhoud>
<![CDATA[
<p>
<font class="SubTitle_gt">&gt; </font><font class="SubTitle">This is a subtitle</font><br/>
</p>
<p>
Welcome!<br/>
Testing,Testing,Testing,Testing,Testing,Testing,Testing,Testing,Testing,Testing,
...
]]> 
</inhoud>
<javascrpt></javascrpt>
</pagina>

[ Voor 12% gewijzigd door Verwijderd op 13-08-2003 09:32 ]


  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 18-08 21:00

Creepy

Tactical Espionage Splatterer

Eeeh... zou je misschien kunnen aangeven WAT er misgaat, en waar? Of eventuele foutmeldingen?

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Verwijderd

Topicstarter
Dat is het rare... ik denk dat hij de pagina wel leest (xml) ...
Als ik nu geen pagina opgeef (dus pag is "") dan gebeurt er ook niets!
Het lijkt dus alsof hij niets uitleest uit de xml.
Hij roept wel de sub aan, dat heb ik gecontroleerd :)

  • whoami
  • Registratie: December 2000
  • Laatst online: 21-08 22:54
Ik snap totaal niet wat je bedoeld of wat je probleem is.

Leg het eens klaar en duidelijk uit.

https://fgheysels.github.io/


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 13-08 16:46

curry684

left part of the evil twins

Er staat ergens in de policies iets over 'zorg ervoor dat je geen n00b of dergelijke termen in je topictitel vermeld als je serieus genomen wil worden'... :z :+

Professionele website nodig?


  • Gert
  • Registratie: Juni 1999
  • Laatst online: 05-12-2025
Probeer eens childNodes(x) ipv item(x)

Verwijderd

Topicstarter
Ik zal anders even de link geven naar de pagina(niet echt spam want hij staat er maar even op e en de pagina is nog lang niet af...)
http://www.freeasphost.co...article&xml=voorbeeld.xml

Wat er dus niet werkt:
De code om de xml op te vragen, ze werkt wel maar er komt niets in titel/inhoud te zitten dus zit er ergens een foutje bij het opvragen de nodes denk ik.

Ik ga even dat van Gert proberen.

Sry curry ;)

EDIT:
Heb even dus dit gedaan (als gert dit bedoelde tenminste):
Set titel1 = xml.getElementsByTagName("titel")
For i=0 To (titel1.length -1)
titel=titel.childnodes(i).text ' vervangen door childnodes ipv item
Next
Set titel1 = xml.getElementsByTagName("inhoud")
For i=0 To (titel1.length -1)
inhoud=titel.item(i).text 'oorspronkelijk
Next

Resultaat: idem :(

Als je op de pagina kijkt staat er links bovenaan een 0 deze zou het aantal elementen in titel moeten weergeven (normaal maar 1 maar zo kan ik titelupdates etc... doen :)) maar hij geeft dus 0 wat wil zeggen dat er niets wordt uitgelezen uit de xml?

[ Voor 43% gewijzigd door Verwijderd op 13-08-2003 10:18 ]


  • Jaspertje
  • Registratie: September 2001
  • Laatst online: 12-08 16:04

Jaspertje

Max & Milo.. lief

Als je het eens zo doet:

ASP:
1
2
3
4
5
6
Dim xml
    Set xml = Server.CreateObject("Microsoft.XMLDOM")
    xml.async = False
    xml.load (Server.MapPath("/xml/"& pag))
    response.write xml.xml
    response.end


Als je nu in de source kijkt zou ie daar XML moeten hebben staan, anders moet je eens kijken of je wel formed XML hebt,

Als ik naar je XML kijk, zie ik dat je maar een titel hebt, is dit altijd zo (per XML pagina??)

Dan moetkan je die namelijk op een andere (snellere) manier uitlezen

ASP.NET Visual Basic:
1
2
3
4
Set titel1 = xml.getElementsByTagName("titel") 
titel=titel.item(0).text
of 
titel=titel(0).text

(zonder de loop erin)

[ Voor 55% gewijzigd door Jaspertje op 13-08-2003 10:23 ]


  • Jaspertje
  • Registratie: September 2001
  • Laatst online: 12-08 16:04

Jaspertje

Max & Milo.. lief

Gert schreef op 13 August 2003 @ 10:00:
Probeer eens childNodes(x) ipv item(x)
Dit gaat alleen werken als je onder titel nog een child hebt.. Maar dat is niet zo, dus werkt in dit geval niet. Bovendien moet ie dan ook de Root aangeven:
titel(0).childnodes(x).text

Verwijderd

Topicstarter
Mijn vorige edit niet op letten, die was te laat!
ff de code van Jaspertje proberen

Dim xml
Set xml = Server.CreateObject("MSXML2.DOMDocument")
xml.async = False
xml.load (Server.MapPath("/xml/voorbeeld.xml"))
response.write xml.xml
response.end

-> geeft:
Invalid ProgID. For additional information specific to this message please visit the Microsoft Online Support site located at: http://www.microsoft.com/contentredirect.asp.
op lijn negen dus bij server.creatobject... zeker dat het object zo heet?
Even vervangen door: Microsoft.XMLDOM werkt wel maar dan krijg ik een lege pagina.
Er staat enkel:
code:
1
2
3
4
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=windows-1252"></HEAD>
<BODY></BODY></HTML>
dus hij leest mijn xml al niet :(

[ Voor 99% gewijzigd door Verwijderd op 13-08-2003 10:23 ]


  • Jaspertje
  • Registratie: September 2001
  • Laatst online: 12-08 16:04

Jaspertje

Max & Milo.. lief

Verwijderd schreef op 13 August 2003 @ 10:12:

Als je op de pagina kijkt staat er links bovenaan een 0 deze zou het aantal elementen in titel moeten weergeven (normaal maar 1 maar zo kan ik titelupdates etc... doen :)) maar hij geeft dus 0 wat wil zeggen dat er niets wordt uitgelezen uit de xml?
Dat is goed..

XMl begint, net als veel andere dingen op het internet te tellen bij 0.. dus niet bij 1 zoals je denkt...

MSXML2 kent ie niet. :) nieuwe object.. dan moet je wel je oude aanroep houden

Is je XML welformed.. (knip alles, plak het in een nieuwe.xml op je desktop en op het in een browser..

[ Voor 18% gewijzigd door Jaspertje op 13-08-2003 10:25 ]


Verwijderd

Topicstarter
Ff verkeerd geformuleerd:)
Als je .length neemt dan heb je toch wel 1, 0 wilt zeggen geen elementen en 1, 1 element,...
maar als je .item(0) doet dan krijg je het eerste element, denk ik.
Eens kijken of die server.mappath niet foutzit!

  • Jaspertje
  • Registratie: September 2001
  • Laatst online: 12-08 16:04

Jaspertje

Max & Milo.. lief

Verwijderd schreef op 13 August 2003 @ 10:25:
Ff verkeerd geformuleerd:)
Als je .length neemt dan heb je toch wel 1, 0 wilt zeggen geen elementen en 1, 1 element,...
maar als je .item(0) doet dan krijg je het eerste element, denk ik.
Eens kijken of die server.mappath niet foutzit!
Nope.. 0 wilt zeggen dat er 1 element is..

Je XML ziet er goed uit :)

[ Voor 4% gewijzigd door Jaspertje op 13-08-2003 10:31 ]


Verwijderd

Topicstarter
K waar is mijn element dan heen?
Dus dan 0 = 1 element en dan is 0 ook gelijk aan geen element want er is geen element anders zou hij het weergeven.
k, het was dus de server.mappath, heb er even een echte locatie van gemaakt en hij poepte de hele xml uit.

Ja hij werkt thx Jaspertje!
ff de response.buffer uitgezet was eigenlijk nergens voor nodig :)

  • Jaspertje
  • Registratie: September 2001
  • Laatst online: 12-08 16:04

Jaspertje

Max & Milo.. lief

Verwijderd schreef op 13 August 2003 @ 10:41:
K waar is mijn element dan heen?
Dus dan 0 = 1 element en dan is 0 ook gelijk aan geen element want er is geen element anders zou hij het weergeven.
Dat klopt niet. Als er geen element is roept ie wat anders denk ik

Wat doe je om het element weer te geven.. En wat geeft ie weer (ik zag net een 0 boven in het scherm staan. Dat was je eerste element

Verwijderd

Topicstarter
Nu werkt hij volledig hier is de code: (die stomme mappath, 1 / teveel en ik zat er 4 schijven naast :))
ASP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<%
Sub LaadXml(pag)
Dim xml
    Set xml = Server.CreateObject("Microsoft.XMLDOM")
    xml.async = False
    xml.load (Server.mappath("xml\"&pag)) ' deze werkt nu :)
Set titel1 = xml.getElementsByTagName("titel") 
titel=titel1.item(0).text
Set titel1 = xml.getElementsByTagName("inhoud") 
inhoud=titel1.item(0).text
Set titel1 = xml.getElementsByTagName("beschrijving") 
beschrijving=titel1.item(0).text
Set titel1 = xml.getElementsByTagName("afbeelding") 
afbeelding=titel1.item(0).text
...
Set titel1 = xml.getElementsByTagName("stylesheet") 
stylesheet=titel1.item(0).text
Set titel1 = xml.getElementsByTagName("javascrpt") 
javascrpt=titel1.item(0).text
'Response.write(Server.mappath("xml\voorbeeld.xml"))
Set XML = Nothing
End Sub
%>

  • Jaspertje
  • Registratie: September 2001
  • Laatst online: 12-08 16:04

Jaspertje

Max & Milo.. lief

Het ziet er redelijk uit, ze zijn bij je provider alleen nu niet blij.. Je sluit je titel1 NERGENS af..

Voordat je die opnieuw gebruikt, moet je eerts Set titel1 = Nothing doen.. en dat zie ik niet. Nu krijg je alleen eengeheugen wat volloopt (zie andere topic :)) Daar moet je nog naar kijken.

edit: En heb je option explicit bovenin je pagina staan ?

[ Voor 10% gewijzigd door Jaspertje op 13-08-2003 10:54 ]


Verwijderd

Topicstarter
Nog geen option explicit maar ik gebruik dat niet echt graag (ivm includes die niet echt proper opgemaakt zijn...) Dat van titel1=nothing wordt direct geregeld!
EDIT:
gedaan

[ Voor 5% gewijzigd door Verwijderd op 13-08-2003 11:10 ]


  • intGod
  • Registratie: Maart 2003
  • Niet online

intGod

Ars non postulat causam

Altijd option explicit gebruiken. Anders blijf je eeuwig aanrommelen.
Pagina: 1