Forum: XML DOM

Forum huvudsida -> Webbdesign -> XML DOM

Sidor: 1

Till botten

Osito 08:55 - 3:e Maj 2006 | Post #1
Medlem
Inlägg: 32


Skicka PM
Skulle någon kunna hjälpa mig på rätt väg att skapa ett XML DOM script (skall visas i tabell). Har letat hjälp på nätet men inte hittat något av värde... Några tips?

Detta är vad jag "fått ihop" hittils. Fungerar inte och jag tror den låser sig.

  1.  
  2. var xmlDoc
  3. function loadXML(){
  4. //Code for IE
  5. if (window.ActiveXObject){
  6. xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
  7. xmlDoc.async=false;
  8. xmlDoc.load("note.xml");
  9. getmessage()
  10. }
  11. //Code for Mozilla
  12. else if (document.implementation && document.implementation.createDocument){
  13. xmlDoc=document.implementation.createDocument("","",null);
  14. xmlDoc.load("note.xml");
  15. xmlDoc.onload=getmessage
  16. }
  17. else{
  18. alert('Your browser cannot handle this script');
  19. }
  20. }
  21.  
  22. function getmessage(){
  23. var index = 0
  24. while(index > 15){
  25. var namn = xmlDoc.getElementsByTagName("namn")(index).firstChild.nodeValue
  26. var stats = xmlDoc.getElementsByTagName("statsskick")(index).firstChild.nodeValue
  27. var yta = xmlDoc.getElementsByTagName("yta")(index).firstChild.nodeValue
  28. var folk = xmlDoc.getElementsByTagName("folkmangd")(index).firstChild.nodeValue
  29. var info = xmlDoc.getElementsByTagName("info")(index).firstChild.nodeValue
  30. document.write("<tr>")
  31. document.write("<td>" + namn + "</td>")
  32. document.write("<td>" + stats + "</td>")
  33. document.write("<td>" + yta + "</td>")
  34. document.write("<td>" + folk + "</td>")
  35. document.write("<td>" + info + "</td>")
  36. document.write("</tr>")
  37. index++;
  38. }
  39. }


-------------------------
//Osito

Senast redigerad 09:46 - 3:e Maj 2006


Nissebosselasse 10:11 - 3:e Maj 2006 | Post #2
Medlem
Inlägg: 490


Skicka PM
Varför avslutar du bara vissa rader med semikolon, och andra inte (raderna 2, 9, 15, 23 bland annat)?

while-loopen utförs aldrig heller (rad 24), eftersom index är satt till 0 (noll)

-------------------------
http://pushingcows.se
Gula Nallen

Senast redigerad 10:12 - 3:e Maj 2006


Osito 10:13 - 3:e Maj 2006 | Post #3
Medlem
Inlägg: 32


Skicka PM
jadu... Det kan man fråga sig Smiley

Nja, javascript behövs inte avslutas (har jag lärt mig iallafall). Därför vissa saker är avsluta är för att en del av scriptet kommer från www.w3shools.com och sedan så tenderar jag att göra det av gammal vana från vanlig java Smiley

-------------------------
//Osito



Nissebosselasse 10:16 - 3:e Maj 2006 | Post #4
Medlem
Inlägg: 490


Skicka PM
Ta för vana att alltid avsluta med semikolon, eller rättare sagt: var konsekvent när du programmerar! Avsluta inte vissa rader med semikolon, och andra inte - har du börjat avsluta med semikolon, gör det i resten av dokumentet också!

Menar du på rad 24:
  1. while (i < 15)

...för det känns mer logiskt.

-------------------------
http://pushingcows.se
Gula Nallen

Senast redigerad 10:16 - 3:e Maj 2006


Osito 10:18 - 3:e Maj 2006 | Post #5
Medlem
Inlägg: 32


Skicka PM
har ändat till semikolon nu...

While... japp det stämmer "sålänge i är minde än 15"


-------------------------
//Osito



Nissebosselasse 10:19 - 3:e Maj 2006 | Post #6
Medlem
Inlägg: 490


Skicka PM
...då får du nog ändra i din kod, för där står det ju
  1.  
  2. while (i > 15)

...vilket innebär "så länge i är större än 15", vilket i aldrig är (det sätts till noll på rad 23).

-------------------------
http://pushingcows.se
Gula Nallen



Osito 10:21 - 3:e Maj 2006 | Post #7
Medlem
Inlägg: 32


Skicka PM
ändrat, dock så fungerar det inte. Står bara och tänker... Låst sig i loppen?

-------------------------
//Osito



Nissebosselasse 10:23 - 3:e Maj 2006 | Post #8
Medlem
Inlägg: 490


Skicka PM
Anropar du loadXML inifrån ditt HTML-dokument någon gång? Annars kommer det ju aldrig att köras igång.

-------------------------
http://pushingcows.se
Gula Nallen



Osito 10:23 - 3:e Maj 2006 | Post #9
Medlem
Inlägg: 32


Skicka PM
anropar det <body onload="loadXML()">

-------------------------
//Osito



Nissebosselasse 10:25 - 3:e Maj 2006 | Post #10
Medlem
Inlägg: 490


Skicka PM
Kanske ska kolla inuti loopen om det verkligen finns 15 objekt som kan läsas in? Det finns kanske bara 5, eller 9?

Kör du IE eller Mozilla? Det är bara IE-versionen som kör igång getmessage (rad 9).

(Förlåt, läste lite för snabbt.)

Kanske måste byta plats på raderna 14 & 15, från...
  1.  
  2. xmlDoc.load("note.xml");
  3. xmlDoc.onload=getmessage;

till...
  1.  
  2. xmlDoc.onload=getmessage;
  3. xmlDoc.load("note.xml");




-------------------------
http://pushingcows.se
Gula Nallen

Senast redigerad 10:28 - 3:e Maj 2006


Osito 10:30 - 3:e Maj 2006 | Post #11
Medlem
Inlägg: 32


Skicka PM
kör "båda", Mozilla anropar på rad 15. har räknat objekten och det är 16 vilket ger 15 då första är 0 ( ? )

-------------------------
//Osito



Nissebosselasse 10:38 - 3:e Maj 2006 | Post #12
Medlem
Inlägg: 490


Skicka PM
Hur ser din XML-fil ut?

----

Jag testade koden med en egen XML-fil, och fick då felmeddelandet i Javascript-konsollen i Mozilla att getElementsByTagName inte är en funktion.

-------------------------
http://pushingcows.se
Gula Nallen

Senast redigerad 10:40 - 3:e Maj 2006


Osito 10:46 - 3:e Maj 2006 | Post #13
Medlem
Inlägg: 32


Skicka PM
Så här ser xmlen ut:

<?xml version="1.0" encoding="ISO-8859-1"?>

<lander>
<land>
         <namn>Kungariket Sverige</namn>
<statsskick>Konstitutionell monarki</statsskick>
         <yta>449964</yta>
<folkmangd>9060430</folkmangd>
         <info>Nationaldag den 6 juni och har nationalsången "Det gamla du fria". För övrigt är det "Det bästa landet"!</info>
</land>

Får också det felet i Mozilla (xmlDoc.getElementsByTagName) samt att i IE säger den att rad 26 char 4 : Objekt krävs.

När jag tittar lite på w3 så ser jag att den funktionen kommer från vbscript.... Smiley

-------------------------
//Osito



Osito 10:55 - 3:e Maj 2006 | Post #14
Medlem
Inlägg: 32


Skicka PM
Har nu fått informartionen utskriven. Hade gjort det fatala misstaget att skriva fel xml (min heter lander.xml). Nu får jag ta och fixa lite så det blir en tabell av de också....

-------------------------
//Osito



Nissebosselasse 10:57 - 3:e Maj 2006 | Post #15
Medlem
Inlägg: 490


Skicka PM
Först: stäng taggen lander i XML-filen.

Sen: rätta sångcitatet i info-taggen tack... Smiley

-------------------------
http://pushingcows.se
Gula Nallen



Osito 11:05 - 3:e Maj 2006 | Post #16
Medlem
Inlägg: 32


Skicka PM
,,ndrat i xml "Du gamla, du fria". Bifogade bara en del av xml. Den är avslutad.

http://ne.keryx.se/~osito/XML/Inl%e4mningar/Sista/

Har fått ut informationen men får den inte i tabell form ny kod:

  1.  
  2. var xmlDoc
  3.  
  4. function loadXML(){
  5. //Code for IE
  6. if (window.ActiveXObject){
  7. xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
  8. xmlDoc.async=false;
  9. xmlDoc.load("lander.xml");
  10. getmessage();
  11. }
  12. //Code for Mozilla
  13. else if (document.implementation && document.implementation.createDocument){
  14. xmlDoc=document.implementation.createDocument("","",null);
  15. xmlDoc.load("note.xml");
  16. xmlDoc.onload=getmessage;
  17. }
  18. else{
  19. alert('Your browser cannot handle this script');
  20. }
  21. }
  22.  
  23. function getmessage(){
  24. var index=0;
  25.  
  26. document.write('<div id="main">');
  27. document.write("<table>");
  28. document.write("<tr>");
  29. document.write("<th class="namn">Officiellt namn</th>");
  30. document.write("<th class="skick">Statsskick</th>");
  31. document.write("<th class="yta">Landyta (km²)</th>");
  32. document.write("<th class="folk">Folkmängd</th>");
  33. document.write("<th>Information</th>");
  34. document.write("</tr>");
  35. while(index < 15){
  36. var namn = xmlDoc.getElementsByTagName("namn")(index).firstChild.nodeValue;
  37. var stats = xmlDoc.getElementsByTagName("statsskick")(index).firstChild.nodeValue;
  38. var yta = xmlDoc.getElementsByTagName("yta")(index).firstChild.nodeValue;
  39. var folk = xmlDoc.getElementsByTagName("folkmangd")(index).firstChild.nodeValue;
  40. var info = xmlDoc.getElementsByTagName("info")(index).firstChild.nodeValue;
  41. document.write("<tr>");
  42. document.write("<td>" + namn + "</td>");
  43. document.write("<td>" + stats + "</td>");
  44. document.write("<td>" + yta + "</td>");
  45. document.write("<td>" + folk + "</td>");
  46. document.write("<td>" + info + "</td>");
  47. document.write("</tr>");
  48. index=index+1;
  49. }
  50. document.write("</table>");
  51. document.write("</div>");
  52. }
  53.  


-------------------------
//Osito



Nissebosselasse 11:08 - 3:e Maj 2006 | Post #17
Medlem
Inlägg: 490


Skicka PM
Raderna 29 och några framåt: du måste använda escape-sekvenser om du vill använda citationstecken (") inuti redan påbörjade citationstecken, eller använd enkla citationstecken. Alltså:
  1. document.write("<th class='namn'>Officiellt namn</th>");
  2. // Eller....
  3. document.write("<th class="namn">Officiellt namn</th>");


----

Ska det verkligen vara paranteser efter xmlDoc.getElementsByTagName("info"), det är väl ett indexvärdet (som i en vektor) du anger? Paranteser använder du bara vid funktionsanrop.

-------------------------
http://pushingcows.se
Gula Nallen

Senast redigerad 11:10 - 3:e Maj 2006


Osito 11:12 - 3:e Maj 2006 | Post #18
Medlem
Inlägg: 32


Skicka PM
Löste det nu. Enda problemmet är att det bara fungerar i IE. Dock var det inte nödvändingt med Mozilla stöd för uppgiften.

  1.  
  2. -- JAVASCRIPT --
  3. var xmlDoc
  4.  
  5. function loadXML(){
  6. //Code for IE
  7. if (window.ActiveXObject){
  8. xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
  9. xmlDoc.async=false;
  10. xmlDoc.load("lander.xml");
  11. getmessage();
  12. }
  13. //Code for Mozilla
  14. else if (document.implementation && document.implementation.createDocument){
  15. xmlDoc=document.implementation.createDocument("","",null);
  16. xmlDoc.load("note.xml");
  17. xmlDoc.onload=getmessage;
  18. }
  19. else{
  20. alert('Your browser cannot handle this script');
  21. }
  22. }
  23.  
  24. function getmessage(){
  25. var index=0;
  26.  
  27. while(index < 15){
  28. var namn = xmlDoc.getElementsByTagName("namn")(index).firstChild.nodeValue;
  29. var stats = xmlDoc.getElementsByTagName("statsskick")(index).firstChild.nodeValue;
  30. var yta = xmlDoc.getElementsByTagName("yta")(index).firstChild.nodeValue;
  31. var folk = xmlDoc.getElementsByTagName("folkmangd")(index).firstChild.nodeValue;
  32. var info = xmlDoc.getElementsByTagName("info")(index).firstChild.nodeValue;
  33. document.write("<tr>");
  34. document.write("<td>" + namn + "</td>");
  35. document.write("<td>" + stats + "</td>");
  36. document.write("<td>" + yta + "</td>");
  37. document.write("<td>" + folk + "</td>");
  38. document.write("<td>" + info + "</td>");
  39. document.write("</tr>");
  40. index=index+1;
  41. }
  42. }
  43.  
  44. -- HTML --
  45. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
  46. "http://www.w3.org/TR/html4/loose.dtd">
  47.  
  48. <html>
  49. <head>
  50. <title>XML</title>
  51. <link href="alla.css" rel="stylesheet" type="text/css">
  52. <style type="text/css">
  53. <!--
  54. /*CSS för allt som skall var speciellt för index.php*/
  55. -->
  56. </style>
  57. <script language="JavaScript" type="text/javascript" src="dom_avslut.js">
  58. </script>
  59. </head>
  60. <body>
  61. <?php include 'meny.php'; ?>
  62. <div id="main">
  63. <table>
  64. <tr>
  65. <th class="namn">Officiellt namn</th>
  66. <th class="skick">Statsskick</th>
  67. <th class="yta">Landyta (km²)</th>
  68. <th class="folk">Folkmängd</th>
  69. <th>Information</th>
  70. </tr>
  71. <script language="JavaScript" type="text/javascript">
  72. loadXML();
  73. </script>
  74. </table>
  75. </div>
  76. </body>
  77. </html>


-------------------------
//Osito



Nissebosselasse 11:14 - 3:e Maj 2006 | Post #19
Medlem
Inlägg: 490


Skicka PM
Okej, bra att det löste till slut!

-------------------------
http://pushingcows.se
Gula Nallen



Osito 11:19 - 3:e Maj 2006 | Post #20
Medlem
Inlägg: 32


Skicka PM
Japp, det var skönt. Har slitit med de här ett tag nu...

Tack för hjälpen och den snabba responsen!

-------------------------
//Osito



Sidor: 1

Forum huvudsida -> Webbdesign -> XML DOM
Atom feed

Du får inte posta i den här tråden | Till toppen