Toon posts:

[ASP/XML] selectNodes => Object Required

Pagina: 1
Acties:
  • 123 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Volgende is het probleem:

XML bestand: http://www.server.nl/test/books.xml
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<Vocabulary> 
   <Word type="noun" level="1"> 
      <English>cat</English> 
      <Spanish>gato</Spanish> 
   </Word> 
   <Word type="verb" level="1"> 
      <English>speak</English> 
      <Spanish>hablar</Spanish> 
   </Word> 
   <Word type="adj" level="1"> 
      <English>big</English> 
      <Spanish>grande</Spanish> 
   </Word> 
</Vocabulary>


Hiervan wil ik alleen de Spanish nodes uitlezen, dat doe ik met dit simpele scriptje:

http://www.server.nl/test/books_xml.asp
code:
1
2
3
4
5
6
7
8
9
<%
Set objXMLDoc = CreateObject("Microsoft.XMLDOM") 
objXMLDoc.async = False 
objXMLDoc.load(Server.MapPath("books.xml"))


Set Node = objXMLDoc.documentElement.selectSingleNode("Word/Spanish") 
document.write(Node.text)
%>


Hierna krijg ik deze error:

code:
1
2
3
4
5
Microsoft VBScript runtime error '800a01a8' 

Object required: '' 

/test/books_xml.asp, line 17


Dat is op deze regel "document.write(Node.text)".

Ik heb al vanalles geprobeerd. Als ik het XML bestand niet per node uitlees, gaat alles wel goed, maar ik heb specifieke waardes uit het XML bestand nodig.

[ Voor 15% gewijzigd door Verwijderd op 22-01-2005 11:47 ]


  • Jaspertje
  • Registratie: September 2001
  • Laatst online: 08-05 09:43

Jaspertje

Max & Milo.. lief

Als je een SelectSingeNode doet, dan moet je er 100% zeker van zijn dat ie bestaat. Wat je kan doen is daarvoor een check:
ASP:
1
2
3
4
if = objXMLDoc.documentElement.selectNodes("/Word/Spanish") .length > 0 then
  Set Node = objXMLDoc.documentElement.selectSingleNode("/Word/Spanish") 
  document.write(Node.text)
end if

En volgens mij moet je XPath met een / beginnen als het de root is en met // als het de eerste node die die vind uit de XML..

-edit-
Je meot //Word doen, niet / of niks, echt //

-aanvulling:
Als je alleen alle Spanish nodes wilt wat is er dan op tegen om:
ASP:
1
2
3
4
if = objXMLDoc.documentElement.selectNodes("//Spanish") .length > 0 then
  Set Node = objXMLDoc.documentElement.selectNodes("//Spanish") 
  document.write(Node.text)
end if
toe doen?

[ Voor 39% gewijzigd door Jaspertje op 22-01-2005 12:32 . Reden: xml van TS bekeken ]


Verwijderd

Topicstarter
Is er misschien een andere goede oplossing om een XML document als hieronder te parsen?
Ik moet alle waardes eruit hebben. Om dit d.m.v. instr te doen lijkt me geen oplossing. Heb het hele internet afgezocht, maar niets kunnen vinden hoe je alle waardes eruit krijgt.
Ik wil dus alle waardes in variabelen krijgen, zoiets dus

orderCode = TEST-ORDER-1
paymentMethod = VISA-SSL

Dit om ze zo in een database te kunnen stoppen.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?xml version="1.0"?>
<!DOCTYPE paymentService PUBLIC "-//Bibit//DTD Bibit PaymentService v1//EN" "http://dtd.bibit.com/paymentService_v1.dtd">
<paymentService version="1.4" merchantCode="DEMO">
    <notify>
    <orderStatusEvent orderCode="TEST-ORDER-1">
        <payment>
            <paymentMethod>VISA-SSL</paymentMethod>
            <amount currencyCode="EUR" debitCreditIndicator="credit" exponent="2" value="2600"/>
            <lastEvent>AUTHORISED</lastEvent>
            <balance accountType="IN_PROCESS_AUTHORISED">
                <amount currencyCode="EUR" debitCreditIndicator="credit" exponent="2" value="2600"/>
            </balance>
        </payment>
            <journal journalType="AUTHORISED">
                <bookingDate> 
                    <date dayOfMonth="30" month="10" year="2002"/>
                </bookingDate>
            </journal>
        </orderStatusEvent>
    </notify>
</paymentService>

  • Jaspertje
  • Registratie: September 2001
  • Laatst online: 08-05 09:43

Jaspertje

Max & Milo.. lief

Je zou m kunnen parsen in MSXML.DomDocument

En dan een recursieve functie maken die alles doorloopt... (waarom zou je een XML bestand in de Db willen hebben?)

  • wizzkizz
  • Registratie: April 2003
  • Laatst online: 19-12-2025

wizzkizz

smile...tomorrow will be worse

Jaspertje schreef op zaterdag 22 januari 2005 @ 15:13:
Je zou m kunnen parsen in MSXML.DomDocument

En dan een recursieve functie maken die alles doorloopt... (waarom zou je een XML bestand in de Db willen hebben?)
Hierover heeft TS inmiddels een nieuw topic geopend :S

Make it idiot proof and someone will make a better idiot.
Real programmers don't document. If it was hard to write, it should be hard to understand.