topical media & game development
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.