lecture 6
lecture 6
Lecture 6
XML Parser
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..
DOM Tree
XML
data
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>
<author>Willian Wong</author> Element: Attribute:
<year>2020</year> <book> “ISBN”
</book>
</bookstore>
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
(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;
Create sub-element
Element pan1 = doc.createElement("pan");
rootElement.appendChild(pan1);
<cookware>
<pan brand="Carote">Egg Pan</pan>
Create attribute </cookware>
Attr attr = doc.createAttribute("brand");
attr.setValue("Carote");
pan1.setAttributeNode(attr);
Create text content
pan1.appendChild(doc.createTextNode("Egg Pan"));
rootElement.appendChild(pan1);
Create XML Document cont..
Basic operation:
Create JAXP Transform object
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
// 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);