[XML] XML file importeert niet

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • Arcane Apex
  • Registratie: Juni 2003
  • Laatst online: 30-01 15:19
Ik probeer een XML bestand te importeren in een .html bestand, maar welke manier ik ook probeer, niets lijkt te werken. (Browser: Firefox 3)

De 2 manieren welke ik heb geprobeerd zijn:

1. AJAX
2. <xml> tag

De AJAX code welke ik gebruik werkt, maar het enige dat ik als output terug krijg is: [object XMLDocument]
Nu heb ik hier en daar gelezen dat je ook een mime-type moet definieren, maar dat de Javascript functie daarvoor alleen werkt in Firefox en pas vanaf IE8. Ik zou het graag werkend willen krijgen, maar wel met acceptabele cross-browser compatibiliteit. (IE8 wordt nog maar weinig gebruikt op het moment)

AJAX code:
code:
1
document.getElementById(id).innerHTML = mijnRequestObject.responseXML;


Wanneer ik het XML bestand probeer te importeren door de <xml> tag te gebruiken gebeurt er zelfs helemaal niets.

XML-tag code:
code:
1
<xml id="foo" src="bestand.xml"></xml>


Ook het volgende werkt niet wanneer ik de XML-tag methode gebruik:

XML-tag code:
code:
1
2
<xml id="foo" src="bestand.xml"></xml>
<span datafld="mijnTekst"></span>

[ Voor 18% gewijzigd door Arcane Apex op 21-02-2009 16:23 ]


Acties:
  • 0 Henk 'm!

  • Cousin Boneless
  • Registratie: Juni 2008
  • Laatst online: 28-02 12:55
[object XMLDocument] Duidt erop dat je een object terugkrijgt. Je zal dus de methodes van dat object moeten gebruiken: mijnRequestObject.responseXML.getElementsByTagName('mijnTekst')[0].nodeValue ofzo.

Als je de mogelijkheid hebt om over te stappen naar JSON, zou je daar ook eens naar kunnen kijken..

Acties:
  • 0 Henk 'm!

  • Arcane Apex
  • Registratie: Juni 2003
  • Laatst online: 30-01 15:19
Cousin Boneless schreef op zaterdag 21 februari 2009 @ 13:00:
[object XMLDocument] Duidt erop dat je een object terugkrijgt. Je zal dus de methodes van dat object moeten gebruiken: mijnRequestObject.responseXML.getElementsByTagName('mijnTekst')\[0].nodeValue ofzo.
Ook dat lijkt niet te werken. Ik heb ook de volgende 3 dingen geprobeerd welke ook niet bleken te werken:

code:
1
2
3
4
5
6
7
8
9
document.getElementById(id).innerHTML = mijnRequestObject.responseXML.document.getElementsByTagName('mijnTekst')[0].nodeValue;

//Of

document.getElementById(id).innerHTML = mijnRequestObject.responseXML.documentElement.document.getElementsByTagName('mijnTekst')[0].nodeValue;

//Of

document.getElementById(id).innerHTML = mijnRequestObject.responseXML.documentElement.document.getElementsByTagName('mijnTekst')[0].childNodes[0].nodeValue;

[ Voor 10% gewijzigd door Arcane Apex op 21-02-2009 16:21 ]


Acties:
  • 0 Henk 'm!

  • tonyisgaaf
  • Registratie: November 2000
  • Niet online
Heb je enig idee waar je het over hebt? Je probeert de responseXML property (welke een XML document returnt) direct in je HTML te plempen, logisch dat dit niet werkt. Tenzij je gewoon platte HTML ophaalt m.b.v. het XMLHttpRequest, die je dan weer linea recta in de HTML kunt pleuren en die dan ook niet onder de responseXML, maar onder de responseText property terug te vinden is. Dat heeft echter niets te maken met XML.

Mocht het wel XML zijn, welke je clientside wilt verwerken, dan raad ik je aan je te verdiepen in het doorlopen van de nodes van een XML document object.

NL Weerradar widget Euro Stocks widget Brandstofprijzen widget voor 's Dashboard


Acties:
  • 0 Henk 'm!

  • Arcane Apex
  • Registratie: Juni 2003
  • Laatst online: 30-01 15:19
tonyisgaaf schreef op zaterdag 21 februari 2009 @ 17:55:
Heb je enig idee waar je het over hebt? Je probeert de responseXML property (welke een XML document returnt) direct in je HTML te plempen, logisch dat dit niet werkt. Tenzij je gewoon platte HTML ophaalt m.b.v. het XMLHttpRequest, die je dan weer linea recta in de HTML kunt pleuren en die dan ook niet onder de responseXML, maar onder de responseText property terug te vinden is. Dat heeft echter niets te maken met XML.

Mocht het wel XML zijn, welke je clientside wilt verwerken, dan raad ik je aan je te verdiepen in het doorlopen van de nodes van een XML document object.
In het kort komt het hier op neer. Ik probeer XML te importeren naar een .html bestand, echter het .xml bestand dat ik aanroep is gekoppeld aan een .xls stylesheet. Dus wat ik probeer te importeren is de gestylde output van het .xml bestand. Ik las dat AJAX de manier was waarop dit over het algemeen werd gedaan, echter ben ik daar niet zeker van.

Volgens mij heb ik responseText ook al geprobeerd, maar werkte dat niet. Ik kreeg volgens mij toen een foutmelding dat ik een .xml bestand opvroeg mbv responseText ipv reponseXML. Toen ik responseXML gebruikte kreeg ik die foutmelding niet. Verder dan dit lukt het me maar niet om te komen.

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Arcane Apex schreef op zaterdag 21 februari 2009 @ 19:16:
[...]


In het kort komt het hier op neer. Ik probeer XML te importeren naar een .html bestand, echter het .xml bestand dat ik aanroep is gekoppeld aan een .xls stylesheet. Dus wat ik probeer te importeren is de gestylde output van het .xml bestand. Ik las dat AJAX de manier was waarop dit over het algemeen werd gedaan, echter ben ik daar niet zeker van.
Zou je de XML dan niet eerst even door de XSLT transformer raggen in plaats van gewoon in je .innerHTML property dumpen? ;)
Arcane Apex schreef op zaterdag 21 februari 2009 @ 19:16:
Volgens mij heb ik responseText ook al geprobeerd, maar werkte dat niet. Ik kreeg volgens mij toen een foutmelding dat ik een .xml bestand opvroeg mbv responseText ipv reponseXML. Toen ik responseXML gebruikte kreeg ik die foutmelding niet. Verder dan dit lukt het me maar niet om te komen.
Seriously; get a clue ;) Verdiep je eens in de materie. Dat werkt veel makkelijker dan in 't wilde weg zaken gaan zitten proberen en bidden dat 't werkt. Omdat een bepaald iets geen foutmelding oplevert wil 't nog niet zeggen dat 't daarom dus maar goed is :X

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • Arcane Apex
  • Registratie: Juni 2003
  • Laatst online: 30-01 15:19
RobIII schreef op zaterdag 21 februari 2009 @ 19:35:
[...]

Zou je de XML dan niet eerst even door de XSLT transformer raggen in plaats van gewoon in je .innerHTML property dumpen? ;)


[...]

Seriously; get a clue ;) Verdiep je eens in de materie. Dat werkt veel makkelijker dan in 't wilde weg zaken gaan zitten proberen en bidden dat 't werkt. Omdat een bepaald iets geen foutmelding oplevert wil 't nog niet zeggen dat 't daarom dus maar goed is :X
Ik heb gisteren vele uren artikelen en tutorials gelezen hierover, maar samengevat zijn die vaak beperkt tot: "Gebruik AJAX om xsl-gestylde XML te importeren". Ik heb me er dus wel in proberen te verdiepen, maar ik loop nu dus tegen dit probleem aan.

De XSL transformer is vrij simpel en ik weet vrijwel zeker dat er geen fouten in zitten. Ik heb het getest zonder de XML te importeren en dan werkt het goed. Het probleem is het importeren. Het laatste stapje.

De bedoeling is om de transformations aan de client-side uit te voeren, zodat de server niet teveel belast wordt. Waar jullie op doelen is waarschijnlijk de transformations eerst server-side te laten uitvoeren en dan de HTML via responseText te importeren, maar dat is dus juist niet de bedoeling. De bedoeling is de transformations aan de client-side door de browser te laten uitvoeren.

[ Voor 16% gewijzigd door Arcane Apex op 21-02-2009 19:59 ]


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • Arcane Apex
  • Registratie: Juni 2003
  • Laatst online: 30-01 15:19
Dat zijn zoekresultaten welke over XSL gaan, niet over het importeren van een .xml bestand waar een .xsl stylesheet aan gekoppeld zit. Het probleem is niet de XSL, het probleem is het importeren van het .xml bestand naar een .html bestand. (de xsl styling dient daarbij wel intact te blijven)

De xsl kant van het verhaal zit wel snor. Het is het importeren van het .xml bestand wat me niet lukt.

[ Voor 14% gewijzigd door Arcane Apex op 21-02-2009 22:18 ]


Acties:
  • 0 Henk 'm!

  • tonyisgaaf
  • Registratie: November 2000
  • Niet online
Arcane Apex schreef op zaterdag 21 februari 2009 @ 22:11:
[...]


Dat zijn zoekresultaten welke over XSL gaan, niet over het importeren van een .xml bestand waar een .xsl stylesheet aan gekoppeld zit. Het probleem is niet de XSL, het probleem is het importeren van het .xml bestand naar een .html bestand. (de xsl styling dient daarbij wel intact te blijven)

De xsl kant van het verhaal zit wel snor. Het is het importeren van het .xml bestand wat me niet lukt.
Maar dat is precies wat jij zegt: je zegt dat het een XML bestand met een gekoppeld(?) XSL bestand is. Dat betekent dat je:
  • Denkt dat een met XMLHttpRequest geladen XML bestand, waarin een XSL gelinkt wordt "automagisch" wordt geparsed, gestyled en dat je die dan met de responseXML kunt uitlezen. Respectievelijk wel, niet, niet mogelijk.
    Of:
  • Je stylet de XML m.b.v. XSL serverside (met dus als resultaat XHTML), roept het resultaat op met een XMLHttpRequest, maar gebruikt onjuist de responseXML i.p.v. de responseText.
Nu mag je zelf eerst uitzoeken welke misvatting voor jou waar is.

Mogelijke oplossing: haal zowel de XML als de XSL op met een XMLHttpRequest, pas de XSL toe op de XML en gebruik het resultaat. Verwacht alleen niet dat het cross-browser werkt.

Op w3schools een deel van de oplossing voor clientside afhandeling.

Alsjeblieft: kleine demo van hoe het zou kunnen: clientside XSL transform i.c.m. XMLHttpRequest (werkt onder Safari en Firefox, IE niet, maar aanpassingen zijn wijdverbreid te vinden). Gebruikmakend van de bestanden van w3schools (voorgaande link), i.c.m. XMLHttpRequest.
Je moet dus client-side nog de XSL toepassen óf van te voren server-side de XSL toepassen zodat je (X)HTML krijgt, maar dan moet je dus de responseText gebruiken.

[ Voor 18% gewijzigd door tonyisgaaf op 22-02-2009 00:45 ]

NL Weerradar widget Euro Stocks widget Brandstofprijzen widget voor 's Dashboard


Acties:
  • 0 Henk 'm!

  • Arcane Apex
  • Registratie: Juni 2003
  • Laatst online: 30-01 15:19
tonyisgaaf schreef op zaterdag 21 februari 2009 @ 23:51:
[...]

Maar dat is precies wat jij zegt: je zegt dat het een XML bestand met een gekoppeld(?) XSL bestand is. Dat betekent dat je:
  • Denkt dat een met XMLHttpRequest geladen XML bestand, waarin een XSL gelinkt wordt "automagisch" wordt geparsed, gestyled en dat je die dan met de responseXML kunt uitlezen. Respectievelijk wel, niet, niet mogelijk.
    Of:
  • Je stylet de XML m.b.v. XSL serverside (met dus als resultaat XHTML), roept het resultaat op met een XMLHttpRequest, maar gebruikt onjuist de responseXML i.p.v. de responseText.
Nu mag je zelf eerst uitzoeken welke misvatting voor jou waar is.
Ik weet niet of het volgende klopt, maar wat ik dacht was dat de client-side XSL-parser altijd een XML document zal parsen/stylen wanneer dit XML document opgevraagd werd. (Of dat nou direct ging, zoals direct het XML bestand in de browser opvragen, of indirect zoals via AJAX.)
Kan ik uit de oplossing concluderen dat dit dus een foute aanname was?
tonyisgaaf schreef op zaterdag 21 februari 2009 @ 23:51:
[...]

Mogelijke oplossing: haal zowel de XML als de XSL op met een XMLHttpRequest, pas de XSL toe op de XML en gebruik het resultaat. Verwacht alleen niet dat het cross-browser werkt.

Op w3schools een deel van de oplossing voor clientside afhandeling.

Alsjeblieft: kleine demo van hoe het zou kunnen: clientside XSL transform i.c.m. XMLHttpRequest (werkt onder Safari en Firefox, IE niet, maar aanpassingen zijn wijdverbreid te vinden). Gebruikmakend van de bestanden van w3schools (voorgaande link), i.c.m. XMLHttpRequest.
Je moet dus client-side nog de XSL toepassen óf van te voren server-side de XSL toepassen zodat je (X)HTML krijgt, maar dan moet je dus de responseText gebruiken.
Heel erg bedankt, dat was inderdaad de oplossing.

[ Voor 124% gewijzigd door Arcane Apex op 22-02-2009 01:53 ]


Acties:
  • 0 Henk 'm!

  • CH4OS
  • Registratie: April 2002
  • Niet online

CH4OS

It's a kind of magic

Arcane Apex schreef op zaterdag 21 februari 2009 @ 19:55:
De XSL transformer is vrij simpel en ik weet vrijwel zeker dat er geen fouten in zitten.
Dat moet wel, anders krijg je een keiharde error terug dat je XML document of je XSLT niet goed is.
Heb je dat al gecontroleerd? Open de XML dus eens direct met FF of IE en zie wat er gebeurd. ;)

Oh, is al opgelost. :)

[ Voor 3% gewijzigd door CH4OS op 22-02-2009 01:34 ]

Pagina: 1