Reads an xml file using JavaScript from a web page. Files used: loadxml.js (main script), readxml.js (client script), and readxml.html. The code for loadxml.js was copied from the article
JavaScript and XML [devarticles.com]
file: loadxml.js
XML.load = function(url) {
var xmldoc = XML.newDocument();
xmldoc.async = false;
xmldoc.load(url);
return xmldoc;
};
XML.newDocument = function(rootTagName, namespaceURL) {
if (!rootTagName) rootTagName = "";
if (!namespaceURL) namespaceURL = "";
if (document.implementation && document.implementation.createDocument) {
// This is the W3C standard way to do it
return document.implementation.createDocument(namespaceURL,
rootTagName, null);
}
else { // This is the IE way to do it
// Create an empty document as an ActiveX object
// If there is no root element, this is all we have to do
var doc = new ActiveXObject("MSXML2.DOMDocument");
// If there is a root tag, initialize the document
if (rootTagName) {
// Look for a namespace prefix
var prefix = "";
var tagname = rootTagName;
var p = rootTagName.indexOf(':');
if (p != -1) {
prefix = rootTagName.substring(0, p);
tagname = rootTagName.substring(p+1);
}
// If we have a namespace, we must have a namespace prefix
// If we don't have a namespace, we discard any prefix
if (namespaceURL) {
if (!prefix) prefix = "a0"; // What Firefox uses
}
else prefix = "";
// Create the root element (with optional namespace) as a
// string of text
var text = "<" + (prefix?(prefix+":"):"") + tagname +
(namespaceURL
?(" xmlns:" + prefix + '="' + namespaceURL +'"')
:"") +
"/>";
// And parse that text into the empty document
doc.loadXML(text);
}
return doc;
}
};
file: readxml.js
function readXmlFile() {
url = 'http://rorbuilder.info/pl/test123';
doc = XML.load(url);
alert(doc.documentElement.firstChild.nextSibling.firstChild.nodeValue);
}
file: readxml.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>Read an XML file</title>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
<script type="text/javascript" src="js/loadxml.js"/>
<script type="text/javascript" src="js/readxml.js"/>
</head>
<body>
<h1>ReadXML</h1>
<p>
If all goes well you should see an alert box display the message 'testing 123'
</p>
<p>Press the 'go' button to read the xml file '<a href="test123">test123</a>'
from the web server.
<input type="button" onclick="readXmlFile()" value="go"/>
</p>
</body>
</html>
Note: To avoid the cross-site security error message 'permission denied', store all the files on the same web server.
To test the above code try out the
demo to read the xml file [rorbuilder.info].