[XML/ASP] Beste manier nodes controleren...

Pagina: 1
Acties:

  • didio
  • Registratie: Maart 2001
  • Laatst online: 01-04 09:19

didio

didio.nl

Topicstarter
Wat is de beste manier om nodes te controleren op welke data er in staat.

voorbeeld:
code:
1
2
3
<data>
<test>geel</test>
</data>

Hier staat in node test nu geel, maar dat kan ook groen of rood zijn.

Nu check ik dat zo:
code:
1
2
3
4
5
6
7
If objResults.selectSingleNode("//data/test").text = "groen" Then
    ' do stuff
ElseIf objResults.selectSingleNode("//data/test").text = "geel" Then
    ' do stuff
ElseIf objResults.selectSingleNode("//data/test").text = "rood" Then
    ' do stuff
End If

Kan dit beter/sneller/makkelijker want ik moet zo dus 15 nodes checken..

Bedankt

weinig tot niks..


  • Juup
  • Registratie: Februari 2000
  • Niet online
Kun je niks met DTD's of met schemas of Relax NG ofzo...

Een wappie is iemand die gevallen is voor de (jarenlange) Russische desinformatiecampagnes.
Wantrouwen en confirmation bias doen de rest.


  • didio
  • Registratie: Maart 2001
  • Laatst online: 01-04 09:19

didio

didio.nl

Topicstarter
Misschien wel, ik ben niet zo into XML dus ik vond het al heel wat dat ik dit voor elkaar kreeg..

Het werkt dus wel, maar het kan vast beter..

weinig tot niks..


  • didio
  • Registratie: Maart 2001
  • Laatst online: 01-04 09:19

didio

didio.nl

Topicstarter
Niemand een ideetje? Of heb ik het al op de juiste manier gedaan?

weinig tot niks..


Verwijderd

Dim colors, i, iscolor, value
colors=split("groen;geel;rood", ";")

value=obj.Results.selectSingleNode("//data/test").text

for i=LBound(colors) to UBound(colors)
if value=colors(i) then
iscolor=colors(i)
end if
next

Zoiets?

  • didio
  • Registratie: Maart 2001
  • Laatst online: 01-04 09:19

didio

didio.nl

Topicstarter
Op die manier kan ik niet bepaalde dingen doen als er een bepaalde kleur als waarde uit komt.

Maar in ieder geval bedankt voor de moeite.

weinig tot niks..


Verwijderd

Tja...dat ligt eraan...wil je bij iedere onafhankelijke kleur iets totaal anders doen of zit er toch wel een bepaalde "logica" in? In het laatste geval is het zelden een probleem om een lus-achtig-iets voor te maken...

  • didio
  • Registratie: Maart 2001
  • Laatst online: 01-04 09:19

didio

didio.nl

Topicstarter
Ik moet echt bij elke kleur iets anders doen, maar wel altijd een stukje van een nieuw xml document maken.

weinig tot niks..


Verwijderd

Het moet echt met een DTD daar zijn ze nou eenmaal voor. Als je het anders wil doen is een regular expressions misschien een optie. Dan heb je niet 10 if then elseif statements

  • didio
  • Registratie: Maart 2001
  • Laatst online: 01-04 09:19

didio

didio.nl

Topicstarter
Op donderdag 20 juni 2002 08:53 schreef voetenzalf het volgende:
Het moet echt met een DTD daar zijn ze nou eenmaal voor. Als je het anders wil doen is een regular expressions misschien een optie. Dan heb je niet 10 if then elseif statements
Weet je misschien ergens een voorbeeldje van zo'n DTD waar ze dit doen, ik heb daar nog nooit mee gewerkt.

weinig tot niks..


  • OMX2000
  • Registratie: Januari 2001
  • Laatst online: 22:08

OMX2000

By any means necessary...

Op donderdag 20 juni 2002 08:53 schreef voetenzalf het volgende:
Het moet echt met een DTD daar zijn ze nou eenmaal voor. Als je het anders wil doen is een regular expressions misschien een optie. Dan heb je niet 10 if then elseif statements
Hoe wil jij met een DTD de data in een element gaan checken? Dat gaat niet...

Dè developers podcast in je moerstaal : CodeKlets Podcast


  • didio
  • Registratie: Maart 2001
  • Laatst online: 01-04 09:19

didio

didio.nl

Topicstarter
Dit is dus eigenlijk dat ik wil..
code:
1
2
3
4
5
6
7
If objResults.selectSingleNode("//data/test").text = "groen" Then
    strNewXML = strNewXML & "<kleur>De kleur is groen</kleur>"
ElseIf objResults.selectSingleNode("//data/test").text = "geel" Then
    strNewXML = strNewXML & "<kleur>De kleur is geel</kleur>"
ElseIf objResults.selectSingleNode("//data/test").text = "rood" Then
    strNewXML = strNewXML & "<kleur>De kleur is rood</kleur>"
End If

Natuurlijk zijn die kleuren fake data en de kleuren fake nodes, ook zou er af en toe als een bepaalde node een bepaalde waarden heeft er een nieuwe If/Then moeten worden uitgevoerd.

Ik wil dus van een xml document wat ik krijg van een remote server, de xml ontleden en een nieuw xml document maken om samen met mijn xsl file er een mooie html pagina van te maken, maar het ontleden is dus het probleem. Ik heb gewoon het gevoel dat dat beter kan dan ik het nu doe.

weinig tot niks..


  • didio
  • Registratie: Maart 2001
  • Laatst online: 01-04 09:19

didio

didio.nl

Topicstarter
Op donderdag 20 juni 2002 09:26 schreef OMX2000 het volgende:

[..]

Hoe wil jij met een DTD de data in een element gaan checken? Dat gaat niet...
Ik dacht ook al van niet, maar omdat ik er te weinig van af weet, ik dacht dat DTD's waren om te controleren of er in bepaalde nodes een bepaalde formaat aan data staat, bijvoorbeeld of er in een node alleen maar getallen staan.

weinig tot niks..


  • tijn
  • Registratie: Februari 2000
  • Laatst online: 31-07 00:06
Nu check ik dat zo:
--------------------------------------------------------------------------------
If objResults.selectSingleNode("//data/test").text = "groen" Then
' do stuff
ElseIf objResults.selectSingleNode("//data/test").text = "geel" Then
' do stuff
ElseIf objResults.selectSingleNode("//data/test").text = "rood" Then
' do stuff
End If
--------------------------------------------------------------------------------

Kan dit beter/sneller/makkelijker want ik moet zo dus 15 nodes checken..
Wellicht kun je beter even de waarde in een variabele zetten en dan met een select case de acties bepalen:
code:
1
2
3
4
5
6
7
8
9
10
Dim strColor

strColor = objResults.selectSingleNode("//data/test").text

Select Case strColor
  Case "rood"
    ' doe iets
  Case "geel"
    ' doe iets heel anders 
End Select

O ja,
Het moet echt met een DTD daar zijn ze nou eenmaal voor. Als je het anders wil doen is een regular expressions misschien een optie. Dan heb je niet 10 if then elseif statements
Euh, wat :? Ik ben ontzettend benieuwd hoe je met een DTD de functionaliteit zoals de topicstarter wil hebben kunt behalen.

Cuyahoga .NET website framework


  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Met Relax NG kan je wel de data in een element checken en is er ook een vorm van enumeraties. Je hoeft je dan dus niet te beperken tot de structuur van XML elementen. Je kunt met schema's echter alleen valideren en als ik je posts zo bekijk wil je eigenlijk meer dan alleen valideren.

Als ik je laatste code zo zie, vraag ik me af of je dit misschien niet beter ook met XSLT kunt doen? Als je tenslotte XML wilt herschrijven naar XML, is dat toch typisch iets voor een XML transformatie-taal zoals XSLT :) .

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • tijn
  • Registratie: Februari 2000
  • Laatst online: 31-07 00:06
Op donderdag 20 juni 2002 09:26 schreef didio het volgende:

Ik wil dus van een xml document wat ik krijg van een remote server, de xml ontleden en een nieuw xml document maken om samen met mijn xsl file er een mooie html pagina van te maken, maar het ontleden is dus het probleem. Ik heb gewoon het gevoel dat dat beter kan dan ik het nu doe.
Bij de stap waar je van XML andere XML maakt ligt het heel erg voor de hand om dit met een XSLT transformatie te doen (wat je dus daarna ook al doet om er html van te maken).

Cuyahoga .NET website framework


  • didio
  • Registratie: Maart 2001
  • Laatst online: 01-04 09:19

didio

didio.nl

Topicstarter
natuurlijk.. ik xsl daar had ik voor deze contructie nog helemaal niet aan gedacht, bedankt jongens.. ik ga weer bouwen..

weinig tot niks..


Verwijderd

Dan zie ik het probleem niet helemaal...:

----------------------------------------------------------

Dim colors, i, iscolor, value
colors=split("groen;geel;rood", ";")
value=obj.Results.selectSingleNode("//data/test").text

for i=LBound(colors) to UBound(colors)
if value=colors(i) then
iscolor=colors(i)
end if
next

strNewXML = strNewXML & "<kleur>De kleur is " & iscolor & "</kleur>"
---------------------------------------------------------

Dan is het toch opgelost? Of begrijp ik het nou verkeerd?

  • didio
  • Registratie: Maart 2001
  • Laatst online: 01-04 09:19

didio

didio.nl

Topicstarter
Op donderdag 20 juni 2002 10:15 schreef D-mension het volgende:
Dan zie ik het probleem niet helemaal...:

----------------------------------------------------------

Dim colors, i, iscolor, value
colors=split("groen;geel;rood", ";")
value=obj.Results.selectSingleNode("//data/test").text

for i=LBound(colors) to UBound(colors)
if value=colors(i) then
iscolor=colors(i)
end if
next

strNewXML = strNewXML & "<kleur>De kleur is " & iscolor & "</kleur>"
---------------------------------------------------------

Dan is het toch opgelost? Of begrijp ik het nou verkeerd?
Die ene regel en al dat kleuren gedoe is een voorbeeld, de echte code is 1.5 meter lang die kan ik hier echt niet posten. ipv die ene strNewXML regel kunnen er per kleur een of meerdere regels new xml code komen en een of meerdere ander if/then loops met daarin dan weer nieuwe regels xml code.

Ik heb misschien toch nog een probleem. Ik moet namelijk ook nog samen met die remote gekregen xml data een locale database call met daaruit een recordset samenvoegen en daar compleet een nieuwe xml formulier uit maken.

Wat kan het leven toch hard zijn..

weinig tot niks..

Pagina: 1