topical media & game development

talk show tell print

professional-ajax-04-XML-Cross-Browser-books.js / js



  function init() {
      var oXmlDom = zXmlDom.createDocument();
      oXmlDom.onreadystatechange = function () {
          if (oXmlDom.readyState == 4) {
              if (oXmlDom.parseError.errorCode == 0) {
                  parseBookInfo(oXmlDom);
              } else {
                  var str = "An error occurred!!\n" +
                      "Description: " + oXmlDom.parseError.reason + "\n" +
                      "File: " + oXmlDom.parseError.url + "\n" +
                      "Line: " + oXmlDom.parseError.line + "\n" +
                      "Line Position: " + oXmlDom.parseError.linepos + "\n" +
                      "Source Code: " + oXmlDom.parseError.srcText;
  
                  alert(str);
              }
          }
      };
      oXmlDom.load("books.xml");
  }
  
  function parseBookInfo(oXmlDom) {
      var oRoot = oXmlDom.documentElement;
      var oFragment = document.createDocumentFragment();
      
      var aBooks = oRoot.getElementsByTagName("book");
      
      for (var i = 0; i < aBooks.length; i++) {
          var sIsbn = aBooks[i].getAttribute("isbn");
          var sAuthor, sTitle, sPublisher;
          
          var oCurrentChild = aBooks[i].firstChild;
  
          do {
              switch (oCurrentChild.tagName) {
                  case "title":
                      sTitle = oCurrentChild.text;
                  break;
                  case "author":
                      sAuthor = oCurrentChild.text;
                  break;
                  case "publisher":
                      sPublisher = oCurrentChild.text;
                  break;
                  default:
                  break;
              }
          } while (oCurrentChild = oCurrentChild.nextSibling);
          
          var divContainer = document.createElement("div");
          var imgBookCover = document.createElement("img");
          var divContent = document.createElement("div");
          
          var sOdd = (i % 2)?"":"-odd";
          divContainer.className = "bookContainer" + sOdd;
          
          imgBookCover.src = "images/" + sIsbn + ".png";
          imgBookCover.className = "bookCover";
          divContainer.appendChild(imgBookCover);
          
          var h3Title = document.createElement("h3");
          h3Title.appendChild(document.createTextNode(sTitle));
          divContent.appendChild(h3Title);
          
          divContent.appendChild(document.createTextNode("Written by: " + sAuthor));
          divContent.appendChild(document.createElement("br"));
          divContent.appendChild(document.createTextNode("ISBN: #" + sIsbn));
          
          var divPublisher = document.createElement("div");
          divPublisher.className = "bookPublisher";
          divPublisher.appendChild(document.createTextNode("Published by: " + sPublisher));
          divContent.appendChild(divPublisher);
          
          divContent.className = "bookContent";
          divContainer.appendChild(divContent);
          
          oFragment.appendChild(divContainer);
      }
      document.body.appendChild(oFragment);
  }
  
  onload = init;


(C) Æliens 20/2/2008

You may not copy or print any of this material without explicit permission of the author or the publisher. In case of other copyright issues, contact the author.