XML-reader die ook werkt onder FireFox

Status
Niet open voor verdere reacties.

Rianneke

Gebruiker
Lid geworden
10 apr 2008
Berichten
30
Ik ben op zoek naar javascript die een xml-file kan lezen en presenteren, die echter niet alleen werkt in IE maar ook in FireFox.

Via internet vond ik een goed werkend script echter alleen voor IE. Weet iemand wat ik moet aanpassen om het ook te laten werken onder FireFox.

Bij voorbaat "mijn dank is groot". :)

---- voorbeeld import.xml --------------------------
[xml]
<?xml version="1.0"?>
<BBLOCK>
<RENDER>
<A>NaamItem_1</A>
<B>Omschrijving</B>
<C>Item1.html</C>
<D>image1.jpg</D>
</RENDER>
<RENDER>
<A>NaamItem_2</A>
<B>Omschrijving</B>
<C>Item2.html</C>
<D>Image2.jpg</D>
</RENDER>
</BBLOCK>
[/xml]
-----------------------------------------

-------- xmlreader.js -----------------
[js]
/*
JS XML Document Reader. Author Joe McCormack. Copyright 2003. All Rights Reserved.
www.geocities.com/code_stratos/
*/
function getRecords(locale,docid,place) {
var plate = new String();
var lemme = new String(docid);
var dest = new String(place);
var recordSet = window.document.getElementById(lemme).recordset;
while(!recordSet.EOF) {
plate += "<table border=\"0\" width=\"100%\" cellpadding=\"5\" cellspacing=\"0\"><tr>";
if (recordSet("D").value.length > 0) {
plate += "<td valign=\"top\"><center>";
if (locale == "links") {
if (recordSet("C").value.length > 0) { plate += "<a href=\"http://"+recordSet("C")+"\">"; }
plate += "<img src=\""+recordSet("D")+"\" border=0 alt=\""+recordSet("A")+"\" />";
if (recordSet("C").value.length > 0) { plate += "</a>"; }
}
if (locale == "email") {
if (recordSet("C").value.length > 0) { plate += "<a href=\"mailto:"+recordSet("C")+"\">"; }
plate += "<img src=\""+recordSet("D")+"\" border=0 alt=\""+recordSet("A")+"\" />";
if (recordSet("C").value.length > 0) { plate += "</a>"; }
}
plate += "</center></td>";
}
plate += "<td valign=\"top\">";
if (recordSet("C").value.length > 0) {
if (locale == "links") { plate += "<a href=\"http://"+recordSet("C")+"\">"; }
if (locale == "email") { plate += "<a href=\"mailto:"+recordSet("C")+"\">"; }
}
plate += recordSet("A"); if (recordSet("C").value.length > 0) { plate += "</a>"; }
plate += "&nbsp;&nbsp;"+recordSet("B")+"</td></tr></table>";
recordSet.moveNext();
}
window.document.getElementById(dest).innerHTML = plate;
}
[/js]
---------------------------------------------------

----------------- HTML-code -------------------
HTML:
<script language="javascript" src="xmlreader.js">
</script>

<!-- XML Announcement Placement -->
<DIV ID="dannouncexml" style="position:relative;visibility:visible;"></DIV>
<XML ID="announceXML" src="import.xml" ondatasetcomplete="getRecords('links','announceXML','dannouncexml');" />
-----------------------------------------------------
 
Laatst bewerkt door een moderator:
uhm, deze lag nog ergens op een plank te verstoffen:
HTML:
<html>
<head>
<script type="text/javascript">
function parseXML()
{
try //Internet Explorer
  {
  xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
  }
catch(e)
  {
  try //Firefox, Mozilla, Opera, etc.
    {
    xmlDoc=document.implementation.createDocument("","",null);
    }
  catch(e)
    {
    alert(e.message);
    return;
    }
  }
xmlDoc.async=false;
xmlDoc.load("note.xml");
document.getElementById("titel").innerHTML=xmlDoc.getElementsByTagName("titel")[0].childNodes[0].nodeValue;
document.getElementById("tekst").innerHTML=xmlDoc.getElementsByTagName("tekst")[0].childNodes[0].nodeValue;
document.getElementById("prijs").innerHTML=xmlDoc.getElementsByTagName("prijs")[0].childNodes[0].nodeValue;
}
</script>
</head>

<body onLoad="parseXML()">
<p><b>Titel:</b> <span id="titel"></span><br />
<b>Tekst:</b> <span id="tekst"></span><br />
<b>Prijs:</b> <span id="prijs"></span><br>
</p>
</body>
</html>
note.xml
Code:
<?xml version="1.0" encoding="ISO-8859-1"?>


<bla>
  		<titel>de titel komt hier</titel> 
  		<tekst>hier komt de omschrijving te staan</tekst>  
  		<prijs>9.90</prijs> 
		<plaatje>plaatje.gif</plaatje>
</bla>



:thumb:
 
Vegras,

Jouw script werkt wel, maar....:confused: voor 1 item.
Wat moet je aanpassen om meerdere items weer te geven ?

Bijv als in xml-file:
<?xml version="1.0"?>
<Products>
<Item>
<A>NaamItem_1</A>
<B>Omschrijving</B>
<C>Item1.html</C>
<D>image1.jpg</D>
</Item>
<Item>
<A>NaamItem_2</A>
<B>Omschrijving</B>
<C>Item2.html</C>
<D>Image2.jpg</D>
</Item>
</Products>
 
oh right. Nou, het is deze expressie:
[JS]xmlDoc.getElementsByTagName("titel")[0].childNodes[0].nodeValue;[/JS]
ofwel: van je document, pak alle elementen met de tag 'titel', pak daarvan de 1e, daarvan de kinderen (inhoud zegmaar), daarvan de waarde.
ofwel:

bla -> titels -> 1e titel -> "de titel komt hier"

om ze allemaal te laten zien:
[JS]for(var i=0;i<xmlDoc.getElementsByTagName("titel").length;i++){
alert( xmlDoc.getElementsByTagName("titel").childNodes[0].nodeValue );
}[/JS]
of iets in die richting.


:thumb:
 
Vargas,

Thanks man. :thumb: Het werkt.

Ik heb je code als volgt aangepast en dan werkt het perfect onder IE en FireFox.

--------------------------------------------------
<html>
<head>
<script type="text/javascript">
function parseXML()
{
try //Internet Explorer
{
xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
}
catch(e)
{
try //Firefox, Mozilla, Opera, etc.
{
xmlDoc=document.implementation.createDocument("","",null);
}
catch(e)
{
alert(e.message);
return;
}
}
xmlDoc.async=false;
xmlDoc.load("note.xml");
for(var i=0;i<xmlDoc.getElementsByTagName("titel").length;i++){
document.write( "Titel:" + xmlDoc.getElementsByTagName("titel").childNodes[0].nodeValue + "<br>");
document.write( "Tekst:" + xmlDoc.getElementsByTagName("tekst")[0].childNodes[0].nodeValue + "<br>");
document.write( "Prijs:" + xmlDoc.getElementsByTagName("prijs")[0].childNodes[0].nodeValue + "<br><br>");
}
}
</script>
</head>

<body onLoad="parseXML()">
</p>
</body>
</html>

------------------------------------------------------------------------------
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan