Professional Documents
Culture Documents
Lecture 6
XML Parser
In Memory Event
Tree Processing
(DOM)
StAX:
The StAX is a pull model API – it is the event handler that calls
the parser API.
Hence, the handler class controls when the parser is to move on
to the next event in the XML document.
Hence, the parsing can be stopped at any point.
Type of Java XML Parser cont..
Feature DOM SAX StAX
API Type In memory tree Push, streaming Pull, streaming
Ease of Use High Medium High
XPath Capability Yes No No
CPU and Memory Varies Good Good
Efficiency
Forward Only No Yes Yes
Read XML Yes Yes Yes
Write XML Yes No Yes
Create, Read, Update or Delete Yes No No
Nodes
Parsing Package in Java
DOM Tree
XML Document
data Builder
DocumentBuilderFactory
JAXP in DOM
• DocumentBuilder – It defines the API to obtain DOM
Document object from an XML document.
• DocumentBuilderFactory – It enables applications to
obtain a parser that produces DOM object trees from
XML documents
DOM Tree
Disadvantages:
DOM parsers are slow compared to SAX parsers, and
consumes a lot of memory.
DOM Tree
DOM Tree
XML Document
<?xml version="1.0" encoding="UTF-8"? Root element:
> <bookstore>
<bookstore>
<book ISBN="101223547">
<title>Data Structure</title> Element: Attribute:
<author>Willian Wong</author> <book> “ISBN”
<year>2020</year>
</book>
</bookstore>
Element: Element: Element:
<title> <author> <year>
Source: https://codebridgeplus.com/android-xml-parsing-using-dom-parser/
DOM Methods
Node curN;
for (int i = 0; i < childN.getLength(); i++) {
curN = childN.item(i);
System.out.println(i + ". " +curN.getNodeName());
}
}
catch (Exception e) { // It catches all the exception raised.
System.out.println(e);
}
}
}
Java Program 2
import javax.xml.parsers.*;
import org.w3c.dom.*;
import java.io.File;
if (n.getNodeType() == n.ELEMENT_NODE){
Element en = (Element) n;
String title = en.getElementsByTagName("title").item(0).getTextContent();
String type = en.getAttribute("type");
String author = en.getElementsByTagName("author").item(0).getTextContent();
String date = en.getElementsByTagName("date").item(0).getTextContent();
String summary = en.getElementsByTagName("summary").item(0).getTextContent();
if (n.getNodeType() == n.ELEMENT_NODE){
Element en = (Element) n;
String title = en.getElementsByTagName("title").item(0).getTextContent();
String type = en.getAttribute("type");
String author = en.getElementsByTagName("author").item(0).getTextContent();
String date = en.getElementsByTagName("date").item(0).getTextContent();
String summary = en.getElementsByTagName("summary").item(0).getTextContent();
TransformerFactory
Output
Transformer (XML data)
Transformer output
properties
Create XML Document cont..
Basic operation:
Import DOM parser packages
import javax.xml.parsers.*;
import javax.xml.transform.*;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.*;
import java.io.File;
// root element
Element rootElement = doc.createElement("cookware");
doc.appendChild(rootElement);
// pan element
Element pan1 = doc.createElement("pan");
rootElement.appendChild(pan1);
Java Program 4 cont..
// setting attribute to element
Attr attr = doc.createAttribute("brand");
attr.setValue("Carote");
pan1.setAttributeNode(attr);
// text content
pan1.appendChild(doc.createTextNode("Egg Pan"));
rootElement.appendChild(pan1);
// root element
Element rootElement = doc.createElement("cookware");
doc.appendChild(rootElement);
// pan element
Element pan1 = doc.createElement("pan");
rootElement.appendChild(pan1);
Java Program 5 cont..
// setting attribute to element
Attr attr = doc.createAttribute("brand");
attr.setValue("Carote");
pan1.setAttributeNode(attr);
// panname element
Element panname1 = doc.createElement("name");
Attr attrType1 = doc.createAttribute("type");
attrType1.setValue("24cm");
panname1.setAttributeNode(attrType1);
panname1.appendChild(doc.createTextNode("Non Stick Frying Pan"));
pan1.appendChild(panname1);