Presentation is loading. Please wait.

Presentation is loading. Please wait.

1 Dr Alexiei Dingli XML Technologies SAX and DOM.

Similar presentations


Presentation on theme: "1 Dr Alexiei Dingli XML Technologies SAX and DOM."— Presentation transcript:

1 1 Dr Alexiei Dingli XML Technologies SAX and DOM

2 2 Simple API for XML Used to parse XML But does not create a default object It just fires events when it detects objects such as –open or close tags –PCDATA or CDATA –Comments –entities What is SAX?

3 3 Imagine the following document: Dingli Alexiei University of Malta alexiei.dingli@um.edu.mt Example

4 4 1.Creating a custom object model (like Person and AddressBook classes) 2.Creating a SAX parser 3.Creating a DocumentHandler (to turn your XML document into instances of your custom object model). SAX in 3 steps

5 5 Create both a person and an address book object Create its setters, getters and to xml methods Custom Object Model (1)

6 6 Custom Object Model (2)

7 7 Create a SAX parser

8 8 Actually 4 Interfaces... –The Document Handler –The Entity Resolver –The DTD Handler –The Error Handler Create a Document Handler (1)

9 9 Create a Document Handler (2)

10 10 parser.setDocumentHandler(... ) parser.setDTDHandler(... ) parser.setErrorHandler(... ) Setting the parser

11 11 Rather than implementing all the interfaces mentioned earlier Make use of org.xml.sax.helpers.DefaultHandler Which implements all the methods And you simply override what you want to use http://java.sun.com/j2se/1.4.2/docs/api/org/ xml/sax/helpers/DefaultHandler.html Handler Class

12 12 SAX Handler Example Handler

13 13 W3C standard Standard way of accessing and manipulating documents Divided into 3 parts –Core DOM (access any structured document) –XML DOM –HTML DOM Presents element as a tree structure DOM

14 14 A standard object model for XML A standard programming interface for XML Platform- and language-independent A W3C standard The XML DOM is a standard for how to get, change, add, or delete XML elements XML DOM

15 15 Everything in XML is a node –The entire document is a document node –Every XML element is an element node –The text in the XML elements are text nodes –Every attribute is an attribute node –Comments are comment nodes XML DOM rulez

16 16 Learning XML 2008 Bookstore is the root node It contains one book node A book node contains a title node and a year node Title contains a text node “Learning XML” 2008 is not the value of the year node but a text node inside the year node Example

17 17 Any DOM object has a node tree where –In a node tree, the top node is called the root –Every node, except the root, has exactly one parent node –A node can have any number of children –A leaf is a node with no children –Siblings are nodes with the same parent The node tree

18 18 text=" " text=text+" "; text=text+" Everyday Italian "; text=text+" John Smith "; text=text+" 2008 "; text=text+" "; Creating the XML

19 19 try //Internet Explorer { xmlDoc=new ActiveXObject("Microsoft.XMLDOM"); xmlDoc.async="false"; xmlDoc.loadXML(text); } catch(e) { try //Firefox, Mozilla, Opera, etc. { parser=new DOMParser(); xmlDoc=parser.parseFromString(text,"text/xml"); } catch(e) { alert(e.message) } document.write("xmlDoc is loaded, ready for use"); Parsing the XML

20 20 x.getElementsByTagName(name) - get all elements with a specified tag name x.appendChild(node) - insert a child node to x x.removeChild(node) - remove a child node from x XML DOM Methods

21 21 x.nodeName - the name of x x.nodeValue - the value of x x.parentNode - the parent node of x x.childNodes - the child nodes of x x.attributes - the attributes nodes of x XML DOM properties

22 22 document.write(xmlDoc.getElementsByTagName("title") [0].childNodes[0].nodeValue); document.write(" "); document.write(xmlDoc.getElementsByTagName("author") [0].childNodes[0].nodeValue); document.write(" "); document.write(xmlDoc.getElementsByTagName("year") [0].childNodes[0].nodeValue); Examples

23 23 1.By using the getElementsByTagName() method 2.By looping through (traversing) the nodes tree 3.By navigating the node tree, using the node relationships Accessing nodes

24 24 xmlDoc.getElementsByTagName("title") [0].childNodes[0].nodeValue; Example 1

25 25 x=xmlDoc.getElementsByTagName("title"); for ( i=0; i "); } Example 2

26 26 x=xmlDoc.getElementsByTagName("book")[0].childNodes; y=xmlDoc.getElementsByTagName("book")[0].firstChild; for (i=0;i<x.length;i++) { if (y.nodeType==1) {//Process only element_nodes (type 1) document.write(y.nodeName + " "); } y=y.nextSibling; } Example 3

27 27 nodeName nodeValue nodeType Node properties

28 28 nodeName is read-only nodeName of an element node is the same as the tag name nodeName of an attribute node is the attribute name nodeName of a text node is always #text nodeName of the document node is always #document nodeName property

29 29 nodeValue for element nodes is undefined nodeValue for text nodes is the text itself nodeValue for attribute nodes is the attribute value nodeValue property

30 30 Node typeNodeType Element1 Attribute2 Text3 Comment8 Document9 nodeType property

31 31 x=xmlDoc.getElementsByTagName("book")[0].attributes; document.write(x.getNamedItem("category").nodeValue); Acessing node attributes

32 32 // documentElement always represents the root node x=xmlDoc.documentElement.childNodes; for (i=0;i<x.length;i++) { document.write(x[i].nodeName); document.write(": "); document.write(x[i].childNodes[0].nodeValue); document.write(" "); } Traversing Example

33 33 parentNode childNodes firstChild lastChild nextSibling previousSibling Navigating Nodes (1)

34 34 Navigating Nodes (2)

35 35 x=xmlDoc.getElementsByTagName("title")[0]; y=x.childNodes[0]; txt=y.nodeValue; Result = the name of the book Title node > Text node Getting the node value

36 36 x=xmlDoc.getElementsByTagName("title")[0].childNodes[0]; x.nodeValue="Easy Cooking"; Setting the node value

37 37 y=xmlDoc.getElementsByTagName("book")[0]; xmlDoc.documentElement.removeChild(y); Or y.parentNode.removeChild(y); Removing Nodes

38 38 newel=xmlDoc.createElement("edition"); x=xmlDoc.getElementsByTagName("book")[ 0]; x.appendChild(newel); Creating nodes

39 39 newel=xmlDoc.createElement("edition"); newtext=xmlDoc.createTextNode("first"); newel.appendChild(newtext); x=xmlDoc.getElementsByTagName("book")[ 0]; x.appendChild(newel); Creating text nodes

40 40 newCDATA=xmlDoc.createCDATASection(" Special Offer & Book Sale"); x=xmlDoc.getElementsByTagName("book")[ 0]; x.appendChild(newCDATA); Create CDATA nodes

41 41 newComment=xmlDoc.createComment("Re vised March 2008"); x=xmlDoc.getElementsByTagName("book")[ 0]; x.appendChild(newComment); Create Comment Node

42 42 x.appendChild(newNode) x.insertBefore(newNode,y) x.cloneNode(true) // add all attributes and children if true x.insertData(offset,"Easy "); // add text More additional methods

43 43 x=xmlDoc.getElementsByTagName("title")[0].getAttribu teNode("lang"); txt=x.nodeValue; Getting attribute value

44 44 newatt=xmlDoc.createAttribute("edition"); newatt.nodeValue="first"; x=xmlDoc.getElementsByTagName("title"); x[0].setAttributeNode(newatt); Creating attributes

45 45 x=xmlDoc.getElementsByTagName('book'); x[0].setAttribute("category","food"); Or x=xmlDoc.getElementsByTagName("book")[0] y=x.getAttributeNode("category"); y.nodeValue="food"; Setting the attribute value

46 46 x=xmlDoc.getElementsByTagName("book"); x[0].removeAttribute("category"); Removing attributes

47 47 Given the following XML fileXML file How shall we display –Two buttons “Get CD info” and display the Titles and the Composer “Get CD info abridged” and display the Titles only Exercise

48 48 The code What’s the result? Answer (1)

49 49 Answer (2)

50 50 Questions?


Download ppt "1 Dr Alexiei Dingli XML Technologies SAX and DOM."

Similar presentations


Ads by Google