13-Mar-16 DOM. 2 Difference between SAX and DOM DOM reads the entire XML document into memory and stores it as a tree data structure SAX reads the XML.

Slides:



Advertisements
Similar presentations
J0 1 Marco Ronchetti - Web architectures – Laurea Specialistica in Informatica – Università di Trento Java XML parsing.
Advertisements

SE 5145 – eXtensible Markup Language (XML ) DOM (Document Object Model) (Part II – Java API) /Spring, Bahçeşehir University, Istanbul.
Written by: Dr. JJ Shepherd
Lecture 4 Java Interfaces (review of inheritance and abstract classes) The XML DOM Java Examples Homework 3.
11-Jun-15 More DOM. Manipulating DOM trees DOM, unlike SAX, gives you the ability to create and modify XML trees There are a few roadblocks along the.
14-Jun-15 DOM. SAX and DOM SAX and DOM are standards for XML parsers-- program APIs to read and interpret XML files DOM is a W3C standard SAX is an ad-hoc.
1 XML and Data Management XML Processors Hachim Haddouti Al Akhawayn University SSE
21-Jun-15 SAX (Abbreviated). 2 XML Parsers SAX and DOM are standards for XML parsers-- program APIs to read and interpret XML files DOM is a W3C standard.
1 Processing XML with Java Representation and Management of Data on the Internet A comprehensive tutorial about XML processing with JavaXML processing.
1 Processing XML with Java CS , Spring 2008/9.
26-Jun-15 SAX. SAX and DOM SAX and DOM are standards for XML parsers--program APIs to read and interpret XML files DOM is a W3C standard SAX is an ad-hoc.
27-Jun-15 XOM. XOM Design Principles XOM (XML Object Model) is yet another XML parser, by textbook author Elliott Rusty Harold The goals of XOM, in order,
JAX- Java APIs for XML by J. Pearce. Some XML Standards Basic –SAX (sequential access parser) –DOM (random access parser) –XSL (XSLT, XPATH) –DTD Schema.
Apache DOM Parser©zwzOctober 24, 2002 Wenzhong Zhao Department of Computer Science The University of Kentucky.
COMP 14: Intro. to Intro. to Programming May 23, 2000 Nick Vallidis.
SE 5145 – eXtensible Markup Language (XML ) DOM (Document Object Model) (Part I) /Spring, Bahçeşehir University, Istanbul.
1 Processing XML with Java Dr. Praveen Madiraju Modified from Dr.Sagiv ’ s slides.
Xpath Sources:
Processing of structured documents Spring 2003, Part 5 Helena Ahonen-Myka.
CSE 6331 © Leonidas Fegaras XML Tools1 XML Tools Leonidas Fegaras.
Java Unit 9: Arrays Declaring and Processing Arrays.
Networking Nasrullah. Input stream Most clients will use input streams that read data from the file system (FileInputStream), the network (getInputStream()/getInputStream()),
1 XML Data Management 4. Domain Object Model Werner Nutt.
XML for E-commerce III Helena Ahonen-Myka. In this part... n Transforming XML n Traversing XML n Web publishing frameworks.
17 Apr 2002 XML Programming - DOM Andy Clark. DOM Design Premise Derived from browser document model Defined in IDL – Lowest common denominator programming.
CSE 6331 © Leonidas Fegaras XML Tools1 XML Tools.
SDPLNotes 3.3: DOM Examples1 3.3 DOM Examples 1. DOM processing in a Web browser –a toy "XML database browser" –with JavaScript and MS Internet Explorer.
Parsing with DOM using MSXML Kanda Runapongsa Dept. of Computer Engineering Khon Kaen University.
The XML Document Object Model (DOM) Aug’10 – Dec ’10.
XML Processing in Java. Required tools Sun JDK 1.4, e.g.: JAXP (part of Java Web Services Developer Pack, already in Sun.
SDPL 2002Notes 3.2: Document Object Model1 3.2 Document Object Model (DOM) n How to provide uniform access to structured documents in diverse applications.
Hello.java Program Output 1 public class Hello { 2 public static void main( String [] args ) 3 { 4 System.out.println( “Hello!" ); 5 } // end method main.
Sheet 1XML Technology in E-Commerce 2001Lecture 3 XML Technology in E-Commerce Lecture 3 DOM and SAX.
1 Processing XML with Java Modified from Dr.Sagiv ’ s slides.
Consuming eXtensible Markup Language (XML) feeds.
Consuming eXtensible Markup Language (XML) feeds.
DOM Programming The Document Object Model standardises  what an application can see of the XML data  how it can access it An XML structure is a tree.
C# and Windows Programming XML Processing. 2 Contents Markup XML DTDs XML Parsers DOM.
CSE 6331 © Leonidas Fegaras XML Tools1 XML Tools.
XML Study-Session: Part III
Document Object Model DOM. Agenda l Introduction to DOM l Java API for XML Parsing (JAXP) l Installation and setup l Steps for DOM parsing l Example –Representing.
SNU OOPSLA Lab. DOM/SAX Applications The ubiquitous XML(9) © copyright 2001 SNU OOPSLA Lab.
SDPLNotes 3.2: DOM1 3.2 Document Object Model (DOM) n How to provide uniform access to structured documents in diverse applications (parsers, browsers,
Apache DOM Parser©zwzOctober 24, 2002 Wenzhong Zhao Department of Computer Science The University of Kentucky.
Schema Data Processing
When we create.rtf document apart from saving the actual info the tool saves additional info like start of a paragraph, bold, size of the font.. Etc. This.
Web services. DOM parsing and SOAP.. Summary. ● Exercise: SAX-Based checkInvoice(), ● push parsing, ● event-based parsing, ● traversal order is depth-first.
Processing of structured documents Part 4. XML processing model zXML processor is used to read XML documents and provide access to their content and structure.
7-Mar-16 Simple API XML.  SAX and DOM are standards for XML parsers-- program APIs to read and interpret XML files  DOM is a W3C standard  SAX is an.
USING ANDROID WITH THE DOM. Slide 2 Lecture Summary DOM concepts SAX vs DOM parsers Parsing HTTP results The Android DOM implementation.
XML & JSON. Background XML and JSON are to standard, textual data formats for representing arbitrary data – XML stands for “eXtensible Markup Language”
21-Jun-16 Document Object Model DOM. SAX and DOM SAX and DOM are standards for XML parsers-- program APIs to read and interpret XML files DOM is a W3C.
XML. Contents  Parsing an XML Document  Validating XML Documents.
{ XML Technologies } BY: DR. M’HAMED MATAOUI
XML Parsers Overview Types of parsers Using XML parsers SAX DOM
Java/XML.
{ XML Technologies } BY: DR. M’HAMED MATAOUI
Creating and Modifying Text part 2
More DOM 13-Nov-18.
DOM Document Object Model.
Jagdish Gangolly State University of New York at Albany
XML Parsers Overview Types of parsers Using XML parsers SAX DOM
More DOM 28-Nov-18.
DOM 8-Dec-18.
WaysInJavaToParseXML
More DOM.
DOM 24-Feb-19.
CS 240 – Advanced Programming Concepts
XML document processing in Java using XPath and XSLT
WaysInJavaToParseXML
Presentation transcript:

13-Mar-16 DOM

2 Difference between SAX and DOM DOM reads the entire XML document into memory and stores it as a tree data structure SAX reads the XML document and sends an event for each element that it encounters Consequences: DOM provides “random access” into the XML document SAX provides only sequential access to the XML document DOM is slow and requires huge amounts of memory, so it cannot be used for large XML documents SAX is fast and requires very little memory, so it can be used for huge documents (or large numbers of documents) This makes SAX much more popular for web sites Some DOM implementations have methods for changing the XML document in memory; SAX implementations do not

3 Simple DOM program, I This program is adapted from CodeNotes® for XML by Gregory Brill, page 128 import javax.xml.parsers.*; import org.w3c.dom.*; public class SecondDom { public static void main(String args[]) { try {...Main part of program goes here... } catch (Exception e) { e.printStackTrace(System.out); } } }

4 Simple DOM program, II First we need to create a DOM parser, called a “DocumentBuilder” The parser is created, not by a constructor, but by calling a static factory method This is a common technique in advanced Java programming The use of a factory method makes it easier if you later switch to a different parser DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder();

5 Simple DOM program, III The next step is to load in the XML file Here is the XML file, named hello.xml : Hello World! To read this file in, we add the following line to our program: Document document = builder.parse("hello.xml"); Notes: document contains the entire XML file (as a tree); it is the Document Object Model If you run this from the command line, your XML file should be in the same directory as your program An IDE may look in a different directory for your file; if you get a java.io.FileNotFoundException, this is probably why

6 Simple DOM program, IV The following code finds the content of the root element and prints it: Element root = document.getDocumentElement(); Node textNode = root.getFirstChild(); System.out.println(textNode.getNodeValue()); This code should be mostly self-explanatory; we’ll get into the details shortly The output of the program is: Hello World!

7 Reading in the tree The parse method reads in the entire XML document and represents it as a tree in memory For a large document, parsing could take a while If you want to interact with your program while it is parsing, you need to parse in a separate thread Once parsing starts, you cannot interrupt or stop it Do not try to access the parse tree until parsing is done An XML parse tree may require up to ten times as much memory as the original XML document If you have a lot of tree manipulation to do, DOM is much more convenient than SAX If you don’t have a lot of tree manipulation to do, consider using SAX instead

8 Structure of the DOM tree The DOM tree is composed of Node objects Node is an interface Some of the more important subinterfaces are Element, Attr, and Text An Element node may have children Attr and Text nodes are leaves Additional types are Document, ProcessingInstruction, Comment, Entity, CDATASection and several others Hence, the DOM tree is composed entirely of Node objects, but the Node objects can be downcast into more specific types as needed

9 Operations on Node s, I The results returned by getNodeName(), getNodeValue(), getNodeType() and getAttributes() depend on the subtype of the node, as follows: Element Text Attr getNodeName() getNodeValue() getNodeType() getAttributes() tag name null ELEMENT_NODE NamedNodeMap "#text" text contents TEXT_NODE null name of attribute value of attribute ATTRIBUTE_NODE null

10 Distinguishing Node types Here’s an easy way to tell what kind of a node you are dealing with: switch(node.getNodeType()) { case Node.ELEMENT_NODE: Element element = (Element)node;...; break; case Node.TEXT_NODE: Text text = (Text)node;... break; case Node.ATTRIBUTE_NODE: Attr attr = (Attr)node;... break; default:... }

11 Operations on Node s, II Tree-walking operations that return a Node : getParentNode() getFirstChild() getNextSibling() getPreviousSibling() getLastChild() Tests that return a boolean : hasAttributes() hasChildNodes()

12 Operations for Element s String getTagName() Returns the name of the tag boolean hasAttribute(String name) Returns true if this Element has the named attribute String getAttribute(String name) Returns the (String) value of the named attribute boolean hasAttributes() Returns true if this Element has any attributes This method is actually inherited from Node Returns false if it is applied to a Node that isn’t an Element NamedNodeMap getAttributes() Returns a NamedNodeMap of all the Element ’s attributes This method is actually inherited from Node Returns null if it is applied to a Node that isn’t an Element

13 NamedNodeMap The node.getAttributes() operation returns a NamedNodeMap Because NamedNodeMap s are used for other kinds of nodes (elsewhere in Java), the contents are treated as general Node s, not specifically as Attr s Some operations on a NamedNodeMap are: getNamedItem(String name) returns (as a Node ) the attribute with the given name getLength() returns (as an int ) the number of Node s in this NamedNodeMap item(int index) returns (as a Node ) the index th item This operation lets you conveniently step through all the nodes in the NamedNodeMap Java does not guarantee the order in which nodes are returned

14 Operations on Text s Text is a subinterface of CharacterData which, in turn, is a subinterface of Node In addition to inheriting the Node methods, it inherits these methods (among others) from CharacterData : public String getData() throws DOMException Returns the text contents of this Text node public int getLength() Returns the number of Unicode characters in the text public String substringData(int offset, int count) throws DOMException Returns a substring of the text contents Text also declares some methods public String getWholeText() Returns a concatenation of all logically adjacent text nodes

15 Operations on Attr s String getName() Returns the name of this attribute. Element getOwnerElement() Returns the Element node this attribute is attached to, or null if this attribute is not in use boolean getSpecified() Returns true if this attribute was explicitly given a value in the original document String getValue() Returns the value of the attribute as a String

16 Preorder traversal The DOM is stored in memory as a tree An easy way to traverse a tree is in preorder You should remember how to do this from your course in Data Structures The general form of a preorder traversal is: Visit the root Traverse each subtree, in order

17 Preorder traversal in Java static void simplePreorderPrint(String indent, Node node) { printNode(indent, node); if(node.hasChildNodes()) { Node child = node.getFirstChild(); while (child != null) { simplePreorderPrint(indent + " ", child); child = child.getNextSibling(); } } } static void printNode(String indent, Node node) { System.out.print(indent); System.out.print(node.getNodeType() + " "); System.out.print(node.getNodeName() + " "); System.out.print(node.getNodeValue() + " "); printNamedNodeMap(node.getAttributes()); // see next slide System.out.println(); }

18 Printing a NamedNodeMap private static void printNamedNodeMap(NamedNodeMap attributes) throws DOMException { if (attributes != null) { for (int i = 0; i < attributes.getLength(); i++) { Node attribute = attributes.item(i); System.out.print(attribute.getNodeName() + "=" + attribute.getNodeValue()); } } }

19 Trying out the program Input: The Beginning The Middle The End Output: 1 novel null 3 #text 1 chapter null num=1 3 #text The Beginning 3 #text 1 chapter null num=2 3 #text The Middle 3 #text 1 chapter null num=3 3 #text The End 3 #text Things to think about: What are the numbers? Are the null s in the right places? Is the indentation as expected? How could this program be improved?

20 Additional DOM operations I’ve left out all the operations that allow you to modify the DOM tree, for example: setNodeValue(String nodeValue ) insertBefore(Node newChild, Node refChild ) Java provides a large number of these operations These operations are not part of the W3C specifications There is no standardized way to write out a DOM as an XML document It isn’t that hard to write out the XML The previous program is a good start on outputting XML

21 The End