|
XML elements can be extracted from an XML document by traversing
the node tree, by accessing the elements by number, or by
accessing the elements by name.
Traversing the node tree
One common way to extract XML elements from an XML document is
to traverse the node tree and extract the text value of each
element. A small snippet of programming code like a VBScript
for/each construct can be written to demonstrate this.
The following VBScript code traverses an XML node tree, and
displays the XML elements in the browser:
set xmlDoc=CreateObject("Microsoft.XMLDOM")
xmlDoc.async="false"
xmlDoc.load("note.xml")
for each x in xmlDoc.documentElement.childNodes
document.write(x.nodename)
document.write(": ")
document.write(x.text)
next
Providing HTML content from XML files
One of the great promises of XML is the possibility to separate
HTML documents from their data. By using an XML parser inside
the browser, an HTML page can be constructed as a static
document, with an embedded JavaScript to provide dynamic data.
The following JavaScript reads XML data from an XML document and
writes the XML data into (waiting) HTML elements.
var xmlDoc = new ActiveXObject("Microsoft.XMLDOM")
xmlDoc.async="false"
xmlDoc.load("note.xml")
nodes = xmlDoc.documentElement.childNodes
to.innerText = nodes.item(0).text
from.innerText = nodes.item(1).text
header.innerText = nodes.item(2).text
body.innerText = nodes.item(3).text
Accessing XML elements by name
Addressing elements by number is not the preferred way to
extract XML elements from an XML document. Using names is a
better way.
The following JavaScript reads XML data from an XML document and
writes the XML data into (waiting) HTML elements.
var xmlDoc = new ActiveXObject("Microsoft.XMLDOM")
xmlDoc.async="false"
xmlDoc.load("note.xml")
to.innerText= xmlDoc.getElementsByTagName("to").item(0).text
from.innerText= xmlDoc.getElementsByTagName("from").item(0).text
header.innerText= xmlDoc.getElementsByTagName("heading").item(0).text
body.innerText= xmlDoc.getElementsByTagName("body").item(0).text
Important: Make sure that you notice that the text element
of a node is the child node of the element. To extract the text
(Jani) from an element like this: <from>Jani</from>, you must
address the child node like this: getElementsByTagName("from").item(0).text,
and not like this: getElementsByTagName("from").text
|