Avatar billede mute Nybegynder
17. december 2002 - 08:43 Der er 7 kommentarer og
1 løsning

Tjekke om attribute eksiterer ..

Først koden:

---------------------- XML ----------------------
<block>
<hl2>Dette skriver selve overskriften</hl2>
<p summary="true">Dette er en kort beskrivelse</p>
<p text="true">
  <p>Dette skriver selve broedteksten, afsnit 1</p>
</p>
</block>
<block>
<hl2>Dette skriver selve overskriften</hl2>
<media media-type="image">
<media-reference data-location="http://127.0.0.1/test.jpg" mime-type="image/jpeg">Dette er et billede</media-reference>
</media>
<p summary="true">Dette er en kort beskrivelse</p>
<p text="true">
  <p>Dette skriver selve broedteksten, afsnit 1</p>
</p>
</block>
--------------------------------------------------


---------------------- ASP ----------------------
set objxmlhttp = server.createobject("Microsoft.XMLHTTP")
set objxmldom = server.createobject("Microsoft.XMLDOM")
call objxmlhttp.open("get", "http://127.0.0.1/test.xml", false)
objxmlhttp.send
set objxmldom = objxmlhttp.responsexml
set characters = objxmldom.selectnodes("//block")
set strdate = objxmldom.selectnodes("//story.date")
set strmedia = objxmldom.selectnodes("//media-reference")
for i = 0 to characters.length - 1
  set character = characters(i)
  response.write "<b>dateline:</b> " & strdate(i).getattribute("norm") & "<br>"
  response.write "<b>hl2:</b> " & character.selectsinglenode("hl2").text & "<br>"
  set arrps = character.selectnodes("p[@text='true']/p")
  for a = 0 to character.selectnodes("p[@text='true']/p").length-1
  response.write("<p>" & arrps(a).text & "</p>")
  next
  response.write "<b>media:</b> " & strmedia(i).getattribute("data-location") & "<br>"
  set character = nothing
next
set strtext = nothing
set characters = nothing
set objxmlhttp = nothing
set objxmldom = nothing
--------------------------------------------------

Spørgsmålet:

Jeg har et xml doc hvor enkelte tags kun indgår når der er indhold i. Hvor tjekker jeg om den eksisterer og udskriver <media> attributten hvis den gør. Både billede link og tekst. Jeg kan godt skrive den ud normalt, men når man kører en løkekr fejler den ligeså snat der er en <block> uden. På forhånd tak.
Avatar billede Slettet bruger
17. december 2002 - 09:18 #1
Fidusen er at checke een ting ad gangen, og for hvert step teste om det gik godt - f.eks.:

Set objTestElement = {object}.selectSingleNode("//block")
If objTestElement Then
  Set objAttr = objTestElement.getAttribute("media")
  If osv...

/CS
Avatar billede mute Nybegynder
17. december 2002 - 09:30 #2
Ja men den fejler når den ikke finder noget.

set strmedia = character.selectnodes("//media")
if strmedia then  <-- Wrong number of arguments or invalid property assignment
response.write "<b>media:</b> " & strmedia(i).getattribute("data-location") & "<br>"
end if

Når og hvis vi får det til at lykkes, er det så egentligt den rigtige måde jeg fanger data-location på?
Avatar billede mute Nybegynder
17. december 2002 - 09:34 #3
set strmedia = character.selectnodes("//media")
if strmedia.length-1 > 0 then
response.write "<b>media:</b> " & character.getattribute("media-reference") & "<br>"
end if

Det her virker, men jeg får intet ud, hvordan kalder jeg data-location og selve teksten. Hver for sig naturligvis.
Avatar billede mute Nybegynder
17. december 2002 - 09:50 #4
Jeg var lidt for hurtig før. Det her virker, men jeg kan ikke udskrive data-location stien:

set strmedia = character.selectnodes("media[@media-type='image']")
if strmedia.length > 0 then
response.write "<b>mediatekst:</b> " & character.selectsinglenode("media[@media-type='image']/media-reference").text & "<br>"
response.write "<b>mediasti:</b> " & character.getattribute("data-location") & "<br>"
end if
Avatar billede Slettet bruger
17. december 2002 - 10:38 #5
Husk at "data-location" er en attribut på "media-reference" elementet - du prøver at hente den fra collection'en med "media" elmenter der har media-type="image".

/CS
Avatar billede mute Nybegynder
17. december 2002 - 10:43 #6
Ja men eksisterer media-type="image så eksisterer data-location også. Jeg kan ikke se hvordan jeg skal kalde den? Den fejler ikke men der er bare ikke noget i:
Det er:

response.write "<b>mediasti:</b> " & character.getattribute("data-location") & "<br>"

Det drejer sig om.
Avatar billede Slettet bruger
17. december 2002 - 11:36 #7
1. "character" peger på <media> elementer.
2. "character.getAttribute()" henter således en attribut fra eet af disse elementer

Du skal altså først et element længere ned:

response.write "<b>mediasti:</b> " & character.selectSingleNode("media-reference").getAttribute("data-location") & "<br>"

/CS
Avatar billede mute Nybegynder
17. december 2002 - 12:15 #8
Med character.selectSingleNode("media/media-reference").getAttribute("data-location") virker det! Det er bare super. Tak for hjælpen!
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