[XML] XPath wrong number of arguments *

Pagina: 1
Acties:

  • BeachPatroller
  • Registratie: November 2002
  • Laatst online: 24-04-2024
Ik ben nou al een tijdje aan het stoeien met Xpath maar op 1 of andere manier wil het maar niet lukken. De structuur van het XML bestand is als volgt.

De xml is gevalideerd en wordt goed in I-explorer weergegeven.
De licenties zijn ter plekke bedacht.

code:
1
2
3
4
5
6
7
8
9
10
11
12
<WORKSTATIONSUMMARY>
 <LICENSES>
  <LICENSEITEM>
     <LICENSENAME><![CDATA[Adobe Photoshop]]></LICENSENAME> 
     <LICENSEID><![CDATA[743212096738466876962783]]></LICENSEID> 
   </LICENSEITEM>
   <LICENSEITEM>
    <LICENSENAME><![CDATA[Adobe Aftereffects]]></LICENSENAME> 
    <LICENSEID><![CDATA[53211209673846687696XXXX]]></LICENSEID> 
  </LICENSEITEM>
 </LICENSES>
</WORKSTATIONSUMMARY>



ASP fragment

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
set objDom = Server.CreateObject("Microsoft.XMLDOM")
objDom.preserveWhiteSpace = True
objDom.ValidateOnParse = True
objDom.resolveExternals = True
objDom.async = False
objDom.setProperty "SelectionLanguage", "XPath" 

Dim test

test = objDom.documentElement.selectNodes
("/WORKSTATIONSUMMARY/LICENSES/LICENSEITEM/LICENSENAME[0]")
'of
test = objDom.selectNodes("/WORKSTATIONSUMMARY/LICENSES/LICENSEITEM[LICENSENAME='Adobe']")


werken niet.

De methodes die ik gebruik heb ik van voorbeelden afgekeken.
Ik weet nou echter niet wat ik hier fout doe.

ASP geeft een
Wrong number of arguments or invalid property assignment.

Kan iemand toelichten wat ik fout doe?

[ Voor 21% gewijzigd door BeachPatroller op 04-12-2003 14:27 ]

Ik ben malle Pietje niet.


  • Genoil
  • Registratie: Maart 2000
  • Laatst online: 12-11-2023
nou voor zover ik het kan zien is je xml niet valid op regel 12 (opening tag ipv closing). maar dat zal wel een typo zijn?

ja en de xpaths kloppen idd niet. een goeie tutorial vind je hier:

http://www.zvon.org/xxl/XSLTutorial/Output/index.html

en waarom is je data CDATA? als ik me niet vergis heb je PCDATA (parseable character data) en CDATA (character data). Waarbij die laatste dus niet geparsed wordt, en je er denk ik ook geen xpath expressies op kunt uitvoeren. Default is alles PCDATA dus dat hoef je niet te specificeren

[ Voor 73% gewijzigd door Genoil op 04-12-2003 14:31 ]


  • BeachPatroller
  • Registratie: November 2002
  • Laatst online: 24-04-2024
Klopt, was een typo. Maar het probleem blijft :'(

Ik ben malle Pietje niet.


  • TukkerTweaker
  • Registratie: November 2001
  • Laatst online: 27-05 10:35
BeachPatroller schreef op 04 december 2003 @ 14:27:
Klopt, was een typo. Maar het probleem blijft :'(
Probeer eens dubbel slahses aan het begin als root: "//"

  • BeachPatroller
  • Registratie: November 2002
  • Laatst online: 24-04-2024
Ook als ik er niks tussen zet (dus geen cdata) of met dubbelslash werkt het niet.

Ook dit:
code:
1
objDom.selectNodes ("//WORKSTATIONSUMMARY/LICENSES/LICENSEITEM/LICENSENAME[text()='HPIO']")


is qua syntax toch gewoon correct?

Ik ben malle Pietje niet.


  • BeachPatroller
  • Registratie: November 2002
  • Laatst online: 24-04-2024
Inderdaad een supertutorial,

Ik vermoed dat ik geen zoekopdracht kan doen naar een licensename omdat er meerdere licenseItems zijn met licensenames

ik kan bijv. niet
objDom.selectNodes("//WORKSTATIONSUMMARY/LICENSES/LICENSEITEM[0]/LICENSENAME[0] doen of

objDom.selectNodes("//WORKSTATIONSUMMARY/LICENSES/LICENSEITEM[2]/LICENSENAME")


correct me if I'm wrong

Ik ben malle Pietje niet.


  • Rickets
  • Registratie: Augustus 2001
  • Niet online

Rickets

Finger and a shift

Jawel, dat kan iirc met location paths/axes in combinatie met position() :)

Mocht je nou snel willen zien wat je XPath-query doet, is dit een handige tool:
http://www.vbxml.com/down...thvisualiserseptember.zip

Bijvoorbeeld zoeken naar een bepaalde licensienaam:
code:
1
/WORKSTATIONSUMMARY/LICENSES/LICENSEITEM/LICENSENAME[contains(text(), 'Photoshop' )]

[ Voor 28% gewijzigd door Rickets op 04-12-2003 19:42 ]

If some cunt can fuck something up, that cunt will pick the worst possible time to fucking fuck it up, because that cunt’s a cunt.

Pagina: 1