0% found this document useful (0 votes)
82 views

XML

The document discusses several examples of using DOM parsers in Java to work with XML documents. It covers creating blank DOM documents, adding child elements, getting the root element, counting elements, checking well-formedness, searching for elements, creating XML files, and regenerating/copying XML files. It also discusses locating errors in XML documents using DOM parsers.

Uploaded by

sankarcpt
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
82 views

XML

The document discusses several examples of using DOM parsers in Java to work with XML documents. It covers creating blank DOM documents, adding child elements, getting the root element, counting elements, checking well-formedness, searching for elements, creating XML files, and regenerating/copying XML files. It also discusses locating errors in XML documents using DOM parsers.

Uploaded by

sankarcpt
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
You are on page 1/ 23

DOM Parser Examples

Creating Blank DOM Document

import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import org.w3c.dom.Document; public class CreateBlankDocument { public static void main(String[] args) { System.out.println("Creating Blank Document..."); try{ //Create instance of DocumentBuilderFactory DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); //Get the DocumentBuilder DocumentBuilder parser = factory.newDocumentBuilder(); //Create blank DOM Document Document doc = parser.newDocument(); }catch(Exception e){ System.out.println(e.getMessage()); } System.out.println("Done..."); System.out.println("Exiting..."); } }

Creating DOM Child Elements

import java.io.File; import import import import import import import import javax.xml.parsers.DocumentBuilder; javax.xml.parsers.DocumentBuilderFactory; javax.xml.transform.Result; javax.xml.transform.Source; javax.xml.transform.Transformer; javax.xml.transform.TransformerFactory; javax.xml.transform.dom.DOMSource; javax.xml.transform.stream.StreamResult;

import org.w3c.dom.Comment; import org.w3c.dom.Document; import org.w3c.dom.Element;

class CreateDomXml { public static void main(String[] args) { try{ //Create instance of DocumentBuilderFactory DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); //Get the DocumentBuilder DocumentBuilder docBuilder = factory.newDocumentBuilder(); //Create blank DOM Document Document doc = docBuilder.newDocument(); //create the root element Element st = doc.createElement("Students"); //add it to the xml tree doc.appendChild(st); //create a comment Comment comment = doc.createComment("This is comment"); //add in the root element st.appendChild(comment); //create child element Element childElement = doc.createElement("student"); //Add the atribute to the child childElement.setAttribute("id","1001"); st.appendChild(childElement); TransformerFactory tranFactory = TransformerFactory.newInstance(); Transformer aTransformer = tranFactory.newTransformer(); Source src = new DOMSource(doc); Result dest = new StreamResult(new File("cpt.xml")); aTransformer.transform(src, dest); }catch(Exception e){ System.out.println(e.getMessage()); } } } output: ---------

<?xml version="1.0" encoding="UTF-8" ?> <root> <!-- This is comment-->

Getting The XML Root Element import org.w3c.dom.*; import javax.xml.parsers.*; import java.io.*; public class GetRootNode{ public static void main(String[] args) { try{ BufferedReader bf = new BufferedReader(new InputStreamReader(System.in)); System.out.print("Enter xml file name: "); String str = bf.readLine(); File file = new File(str); if (file.exists()){ DocumentBuilderFactory fact = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = fact.newDocumentBuilder(); Document doc = builder.parse(str); Node node = doc.getDocumentElement(); String root = node.getNodeName(); System.out.println("Root Node: " + root); } else{ System.out.println("File not found!"); } } catch(Exception e){} } }

To Count XML Element

import java.io.BufferedReader; import java.io.File; import java.io.InputStreamReader; import javax.xml.parsers.DocumentBuilderFactory; import org.w3c.dom.Document; import org.w3c.dom.NodeList; public class DOMCountElement{ public static void main(String[] args) { try { BufferedReader bf = new BufferedReader(new InputStreamReader(System.in)); System.out.print("Enter File name: "); String xmlFile = bf.readLine(); File file = new File(xmlFile); if (file.exists()){

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); // Create the builder and parse the file Document doc = factory.newDocumentBuilder().parse(xmlFile); System.out.print("Enter element name: "); String element = bf.readLine(); NodeList nodes = doc.getElementsByTagName(element); System.out.println("xml Document Contains " + nodes.getLength() + " elements."); } else{ System.out.print("File not found!"); } } catch (Exception ex) { System.out.println(ex); } }

XML Well-Formed-ness

import import import import

java.io.BufferedReader; java.io.File; java.io.IOException; java.io.InputStreamReader;

import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import org.w3c.dom.Document; import org.xml.sax.InputSource; public class DOMParserCheck { static public void main(String[] arg){ try{ BufferedReader bf = new BufferedReader(new InputStreamReader(System.in)); System.out.print("Enter File name: "); String xmlFile = bf.readLine(); File file = new File(xmlFile); if(file.exists()){ try { // Create a new factory to create parsers DocumentBuilderFactory dBF = DocumentBuilderFactory.newInstance(); // Use the factory to create a parser (builder) and use // it to parse the document. DocumentBuilder builder = dBF.newDocumentBuilder(); // builder.setErrorHandler(new MyErrorHandler()); InputSource is = new InputSource(xmlFile); Document doc = builder.parse(is); System.out.println(xmlFile + " is well-formed!"); } catch (Exception e) { System.out.println(xmlFile + " isn't well-formed!"); System.exit(1);

} } else{ System.out.print("File not found!"); } } catch(IOException io){ io.printStackTrace(); } }

Searching an Element in the given XML Document import java.io.BufferedReader; import java.io.File; import java.io.InputStreamReader; import org.w3c.dom.Document; import org.w3c.dom.NodeList; import com.sun.org.apache.xerces.internal.parsers.DOMParser; public class SearchElement{ public static void main(String[] args) { try{ BufferedReader bf = new BufferedReader(new InputStreamReader(System.in)); System.out.print("Enter file name: "); String str = bf.readLine(); File file = new File(str); if (file.exists()){ DOMParser parser = new DOMParser(); parser.parse(str); Document doc = parser.getDocument(); System.out.print("Enter element that have to count: "); String ele = bf.readLine(); NodeList list = doc.getElementsByTagName(ele); if(list.getLength() == 0){ System.out.println("Element doesn't exist in the " + str + " Document."); } else{ System.out.println("Element occurrs " + list.getLength() + " times in the " + str); } } else{ System.out.println("File not found!"); } } catch (Exception e){ e.getMessage(); } } }

Create - XML File (Document)

import import import import import import

java.io.*; javax.xml.parsers.*; javax.xml.transform.*; javax.xml.transform.dom.*; javax.xml.transform.stream.*; org.w3c.dom.*;

public class CreatXMLFile { public static void main(String[] args) throws Exception { BufferedReader bf = new BufferedReader(new InputStreamReader(System.in)); System.out.print("Enter number to add elements in your XML file: "); String str = bf.readLine(); int no = Integer.parseInt(str); System.out.print("Enter root: "); String root = bf.readLine(); DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance(); DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder(); Document document = documentBuilder.newDocument(); Element rootElement = document.createElement(root); document.appendChild(rootElement); for (int i = 1; i <= no; i++){ System.out.print("Enter the element: "); String element = bf.readLine(); System.out.print("Enter the data: "); String data = bf.readLine(); Element em = document.createElement(element); em.appendChild(document.createTextNode(data)); rootElement.appendChild(em); } TransformerFactory transformerFactory = TransformerFactory.newInstance(); Transformer transformer = transformerFactory.newTransformer(); DOMSource source = new DOMSource(document); StreamResult result = new StreamResult(System.out); transformer.transform(source, result); } }

Regenerating XML file

import java.io.BufferedReader; import java.io.File; import java.io.InputStreamReader;

import import import import import import import import

javax.xml.parsers.DocumentBuilder; javax.xml.parsers.DocumentBuilderFactory; javax.xml.transform.Result; javax.xml.transform.Source; javax.xml.transform.Transformer; javax.xml.transform.TransformerFactory; javax.xml.transform.dom.DOMSource; javax.xml.transform.stream.StreamResult;

import org.w3c.dom.Document; import org.w3c.dom.Node; public class GetElementsDOM{ static public void main(String[] arg)throws Exception{ BufferedReader bf = new BufferedReader(new InputStreamReader(System.in)); System.out.print("Enter XML File Name: "); String xmlFile = bf.readLine(); File file = new File(xmlFile); if(file.exists()){ try { // Create a factory DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); // Use document builder factory DocumentBuilder builder = factory.newDocumentBuilder(); //Parse the document Document doc = builder.parse(xmlFile); TransformerFactory tranFact = TransformerFactory.newInstance(); Transformer transfor = tranFact.newTransformer(); Node node =doc.getDocumentElement(); Source src = new DOMSource(node); Result dest = new StreamResult(new File("Copy_of_Sample.xml")); transfor.transform(src, dest); } catch (Exception e) { System.err.println(e); } } else{ System.out.print("File not found!"); } } }

XML Error checker and locater (DOM) import import import import java.io.BufferedReader; java.io.File; java.io.IOException; java.io.InputStreamReader;

import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException;

import org.w3c.dom.Document; import org.xml.sax.SAXException; import org.xml.sax.SAXParseException; public class DOMLocateError{ static public void main(String[] arg){ try { BufferedReader bf = new BufferedReader(new InputStreamReader(System.in)); System.out.print("Enter File name: "); String xmlFile = bf.readLine(); File file = new File(xmlFile); if(file.exists()){ // Create a new factory DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); // Use the factory to create builder document. DocumentBuilder builder = factory.newDocumentBuilder(); Document doc = builder.parse(xmlFile); System.out.println(xmlFile + " is well-formed!"); } else{ System.out.print("File not found!"); } } catch (SAXParseException e) { System.out.println("type" + ": " + e.getMessage()+"\n"); System.out.println("Line " + e.getLineNumber() + " Column " + e.getColumnNumber()); } catch (SAXException e) { System.err.println(e); System.exit(1); } catch (ParserConfigurationException e) { System.err.println(e); System.exit(1); } catch (IOException e) { System.err.println(e); System.exit(1); } } }

Getting all XML Elements

import java.io.BufferedReader; import java.io.File; import java.io.InputStreamReader; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory;

import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.NodeList; public class DOMElements{ static public void main(String[] arg){ try { BufferedReader bf = new BufferedReader(new InputStreamReader(System.in)); System.out.print("Enter XML File name: "); String xmlFile = bf.readLine(); File file = new File(xmlFile); if(file.exists()){ // Create a factory DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); // Use the factory to create a builder DocumentBuilder builder = factory.newDocumentBuilder(); Document doc = builder.parse(xmlFile); // Get a list of all elements in the document NodeList list = doc.getElementsByTagName("*"); System.out.println("XML Elements: "); for (int i=0; i<list.getLength(); i++) { // Get element Element element = (Element)list.item(i); System.out.println(element.getNodeName()); } } else{ System.out.print("File not found!"); } } catch (Exception e) { System.exit(1); } } }

Adding DOCTYPE to a XML File import java.io.BufferedReader; import java.io.File; import java.io.InputStreamReader; import import import import import import import import import javax.xml.parsers.DocumentBuilder; javax.xml.parsers.DocumentBuilderFactory; javax.xml.transform.OutputKeys; javax.xml.transform.Result; javax.xml.transform.Source; javax.xml.transform.Transformer; javax.xml.transform.TransformerFactory; javax.xml.transform.dom.DOMSource; javax.xml.transform.stream.StreamResult;

import org.w3c.dom.Document;

public class AddDocType{ static public void main(String[] args){ try{ BufferedReader bf = new BufferedReader(new InputStreamReader(System.in)); System.out.print("Enter XML file name: "); String xmlFile = bf.readLine(); System.out.println(); File file = new File(xmlFile); if (file.exists()){ DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); Document doc = builder.parse(xmlFile); // Create transformer Transformer tFormer = TransformerFactory.newInstance().newTransformer(); // Set system id tFormer.setOutputProperty(OutputKeys.DOCTYPE_SYSTEM, "systmId"); // Set public id // tFormer.setOutputProperty(OutputKeys.DOCTYPE_PUBLIC, "publicId"); Source source = new DOMSource(doc); Result result = new StreamResult(System.out); tFormer.transform(source, result); System.out.println(); } else{ System.out.println("File not found!"); } } catch (Exception e){ e.getMessage(); } } } Getting Dom Tree Elements and their Corresponding XML Fragments import import import import import import import java.io.*; javax.xml.parsers.*; org.w3c.dom.*; org.xml.sax.*; javax.xml.transform.*; javax.xml.transform.dom.DOMSource; javax.xml.transform.stream.StreamResult;

public class DisplayElementNodes { static public void main(String[] arg){ try{ BufferedReader bf = new BufferedReader(new InputStreamReader(System.in)); System.out.print("Enter a XML file name: "); String xmlFile = bf.readLine(); File file = new File(xmlFile); if (file.exists()){ DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); Document doc = builder.parse(xmlFile); TransformerFactory tranFactory = TransformerFactory.newInstance();

Transformer aTransformer = tranFactory.newTransformer(); // Get nodes list of all elements NodeList list = doc.getElementsByTagName("*"); for (int i=0; i<list.getLength(); i++){ // Get element Element element = (Element)list.item(i); Source src = new DOMSource(element); System.out.println("Node no: " + i + " is " + element.getNodeName()); System.out.println( "Its corresponding xml representation:"); Result dest = new StreamResult(System.out); aTransformer.transform(src, dest); System.out.println("\n"); } } else{ System.out.println(xmlFile + " (file name) doesn't found!"); } } catch (Exception e){ e.getMessage(); } }

Cloning a XML Element import java.io.BufferedReader; import java.io.File; import java.io.InputStreamReader; import import import import import import import import javax.xml.parsers.DocumentBuilder; javax.xml.parsers.DocumentBuilderFactory; javax.xml.transform.Result; javax.xml.transform.Source; javax.xml.transform.Transformer; javax.xml.transform.TransformerFactory; javax.xml.transform.dom.DOMSource; javax.xml.transform.stream.StreamResult;

import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.NodeList; public class DOMCloneElements { static public void main(String[] arg){ try { BufferedReader bf = new BufferedReader(new InputStreamReader(System.in)); System.out.print("Enter XML file name: "); String xmlFile = bf.readLine(); File file = new File(xmlFile); if (file.exists()){ DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); Document doc = builder.parse(xmlFile); TransformerFactory tFactory = TransformerFactory.newInstance();

} catch (Exception e){ e.getMessage(); } } }

Transformer tformer = tFactory.newTransformer(); Source source = new DOMSource(doc); Result result = new StreamResult(System.out); System.out.println(xmlFile + " file: "); tformer.transform(source, result); System.out.println(); System.out.print("Enter the element to clone: "); String clone = bf.readLine(); System.out.print("Enter data to add: "); String addElement = bf.readLine(); //////////////////////////////// NodeList list = doc.getElementsByTagName(clone); Element element1 = (Element)list.item(0); Element copyElement = (Element) element1.cloneNode(true); element1.getParentNode().insertBefore(copyElement, element1.getNextSibling()); element1.appendChild(doc.createTextNode(addElement)); tformer.transform(source, result); } else{ System.out.println("File not found!"); }

Remove Element from XML Document import java.io.BufferedReader; import java.io.File; import java.io.InputStreamReader; import import import import import import import import javax.xml.parsers.DocumentBuilder; javax.xml.parsers.DocumentBuilderFactory; javax.xml.transform.Result; javax.xml.transform.Source; javax.xml.transform.Transformer; javax.xml.transform.TransformerFactory; javax.xml.transform.dom.DOMSource; javax.xml.transform.stream.StreamResult;

import org.w3c.dom.Document; import org.w3c.dom.Element; public class RemoveElement { static public void main(String[] arg) { try{ BufferedReader bf = new BufferedReader(new InputStreamReader(System.in)); System.out.print("Enter a XML file name: "); String xmlFile = bf.readLine(); File file = new File(xmlFile);

// //

System.out.print("Enter an element which have to delete: "); String remElement = bf.readLine(); if (file.exists()){ DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); Document doc = builder.parse(xmlFile); TransformerFactory tFactory = TransformerFactory.newInstance(); Transformer tFormer = tFactory.newTransformer(); Element element = (Element)doc.getElementsByTagName(remElement).item(0); Remove the node element.getParentNode().removeChild(element); Normalize the DOM tree to combine all adjacent nodes doc.normalize(); Source source = new DOMSource(doc); Result dest = new StreamResult(System.out); tFormer.transform(source, dest); System.out.println(); } else{ System.out.println("File not found!"); }

} catch (Exception e){ System.err.println(e); System.exit(0); } } }

Getting Data from XML File (Document) import java.io.BufferedReader; import java.io.File; import java.io.InputStreamReader; import import import import import import import import import javax.xml.parsers.DocumentBuilder; javax.xml.parsers.DocumentBuilderFactory; javax.xml.transform.OutputKeys; javax.xml.transform.Result; javax.xml.transform.Source; javax.xml.transform.Transformer; javax.xml.transform.TransformerFactory; javax.xml.transform.dom.DOMSource; javax.xml.transform.stream.StreamResult;

import org.w3c.dom.Document; public class GetData{ static public void main(String[] arg) { try{ BufferedReader bf = new BufferedReader(new InputStreamReader(System.in)); System.out.print("Enter XML file name: "); String xmlFile = bf.readLine(); File file = new File(xmlFile);

// // //

} catch (Exception e){ System.err.println(e); System.exit(0); } }

if (file.exists()){ DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); Document doc = builder.parse(xmlFile); Create transformer Transformer tFormer = TransformerFactory.newInstance().newTransformer(); Output text type tFormer.setOutputProperty(OutputKeys.METHOD, "text"); Write the document to a file Source source = new DOMSource(doc); Result result = new StreamResult(System.out); tFormer.transform(source, result); } else{ System.out.println("File not found!"); }

Storing Data (Retrieved from a XML Document) to a File import java.io.BufferedReader; import java.io.File; import java.io.InputStreamReader; import import import import import import import import import javax.xml.parsers.DocumentBuilder; javax.xml.parsers.DocumentBuilderFactory; javax.xml.transform.OutputKeys; javax.xml.transform.Result; javax.xml.transform.Source; javax.xml.transform.Transformer; javax.xml.transform.TransformerFactory; javax.xml.transform.dom.DOMSource; javax.xml.transform.stream.StreamResult;

import org.w3c.dom.Document; public class StoreData{ static public void main(String[] arg) { try{ BufferedReader bf = new BufferedReader(new InputStreamReader(System.in)); System.out.print("Enter XML file name: "); String xmlFile = bf.readLine(); File file = new File(xmlFile); if (file.exists()){ DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); Document doc = builder.parse(xmlFile); // Create transformer Transformer tFormer = TransformerFactory.newInstance().newTransformer();

// // //

} catch (Exception e){ System.err.println(e); System.exit(0); } }

Output Types (text/xml/html) tFormer.setOutputProperty(OutputKeys.METHOD, "text"); Write the document to a file Source source = new DOMSource(doc); Create File to view your xml data as vk.txt/vk.doc/vk.xls/vk.shtml/vk.html) Result result = new StreamResult(new File("vk.txt")); tFormer.transform(source, result); System.out.println("File creation successfully!"); } else{ System.out.println("File not found!"); }

XML Validate DTD import java.io.FileInputStream; import import import import import import import javax.xml.parsers.DocumentBuilder; javax.xml.parsers.DocumentBuilderFactory; javax.xml.transform.OutputKeys; javax.xml.transform.Transformer; javax.xml.transform.TransformerFactory; javax.xml.transform.dom.DOMSource; javax.xml.transform.stream.StreamResult;

import org.w3c.dom.Document; import org.xml.sax.SAXException; import org.xml.sax.SAXParseException; public class DOMValidateDTD { public static void main(String args[]) { try{ DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); factory.setValidating(true); DocumentBuilder builder = factory.newDocumentBuilder(); builder.setErrorHandler(new org.xml.sax.ErrorHandler() { //Ignore the fatal errors public void fatalError(SAXParseException exception)throws SAXException { } //Validation errors public void error(SAXParseException e)throws SAXParseException { System.out.println("Error at " +e.getLineNumber() + " line."); System.out.println(e.getMessage()); System.exit(0); } //Show warnings public void warning(SAXParseException err)throws SAXParseException{ System.out.println(err.getMessage());

} catch (Exception e) { System.out.println(e.getMessage()); } } }

System.exit(0); } }); Document xmlDocument = builder.parse(new FileInputStream("Sample.xml")); DOMSource source = new DOMSource(xmlDocument); StreamResult result = new StreamResult(System.out); TransformerFactory tf = TransformerFactory.newInstance(); Transformer transformer = tf.newTransformer(); transformer.setOutputProperty(OutputKeys.DOCTYPE_SYSTEM, "Employee.dtd"); transformer.transform(source, result);

SAX Parser

XML Well-Formed Verifier

package com.eMeter.xml.sax; import import import import java.io.BufferedReader; java.io.File; java.io.IOException; java.io.InputStreamReader;

import org.xml.sax.SAXException; import org.xml.sax.XMLReader; import org.xml.sax.helpers.XMLReaderFactory; public class SAXParserCheck{ public static void main(String[] args) throws IOException{ BufferedReader bf = new BufferedReader(new InputStreamReader(System.in)); System.out.print("Enter XML file name:"); String xmlFile = bf.readLine(); new SAXParserCheck(xmlFile); } public SAXParserCheck(String str){ try{ File file = new File(str); if (file.exists()){ XMLReader reader = XMLReaderFactory.createXMLReader(); reader.parse(str); System.out.println(str + " is well-formed!"); } else{ System.out.println("File not found: " + str); }

} catch (SAXException sax){ System.out.println(str + " isn't well-formed"); } catch (IOException io){ System.out.println(io.getMessage()); } }

Get XML Elements

package com.eMeter.xml.sax; import javax.xml.parsers.SAXParser; import javax.xml.parsers.SAXParserFactory; import org.xml.sax.Attributes; import org.xml.sax.SAXException; import org.xml.sax.helpers.DefaultHandler; public class XMLElements { public static void main(String[] args) { try { SAXParserFactory parserFact = SAXParserFactory.newInstance(); SAXParser parser = parserFact.newSAXParser(); System.out.println("XML Elements: "); DefaultHandler handler = new DefaultHandler() { public void startElement(String uri, String lName, String ele, Attributes attributes) throws SAXException { //print elements of xml System.out.println(ele); } }; parser.parse(args[0], handler); } catch (Exception e) { e.printStackTrace(); } } }

Get Data From the XML File

package com.eMeter.xml.sax; import java.io.BufferedReader; import java.io.File; import java.io.IOException;

import java.io.InputStreamReader; import javax.xml.parsers.SAXParser; import javax.xml.parsers.SAXParserFactory; import org.xml.sax.Attributes; import org.xml.sax.SAXException; import org.xml.sax.helpers.DefaultHandler; public class EmployeeDetails{ public static void main(String[] args) throws IOException{ BufferedReader bf = new BufferedReader(new InputStreamReader(System.in)); System.out.print("Enter XML file name:"); String xmlFile = bf.readLine(); new EmployeeDetails(xmlFile); } public EmployeeDetails(String str){ try{ File file = new File(str); if (file.exists()){ SAXParserFactory parserFact = SAXParserFactory.newInstance(); SAXParser parser = parserFact.newSAXParser(); System.out.println("XML Data: "); DefaultHandler dHandler = new DefaultHandler(){ boolean id; boolean name; boolean mail; public void startElement(String uri, String localName, String element_name, Attributes attributes)throws SAXException{ if (element_name.equals("Emp_Id")){ id = true; } if (element_name.equals("Emp_Name")){ name = true; } if (element_name.equals("Emp_E-mail")){ mail = true; } } public void characters(char[] ch, int start, int len) throws SAXException{ String str = new String (ch, start, len); if (id){ System.out.println("Emp_Id: "+str); id = false; } if (name){ System.out.println("Name: "+str); name = false; } if (mail){ System.out.println("E-mail: "+str); mail = false; } } };

} catch (Exception e){ System.out.println("XML File hasn't any elements"); e.printStackTrace(); } }

parser.parse(str, dHandler); } else{ System.out.println("File not found!"); }

XML Count Elements package com.eMeter.xml.sax; import import import import java.io.BufferedReader; java.io.File; java.io.IOException; java.io.InputStreamReader;

import javax.xml.parsers.SAXParser; import javax.xml.parsers.SAXParserFactory; import org.xml.sax.Attributes; import org.xml.sax.SAXException; import org.xml.sax.helpers.DefaultHandler; public class SAXElementCount { int startTag = 0; public static String ele; public static void main(String args[]) throws IOException { BufferedReader bf = new BufferedReader(new InputStreamReader(System.in)); System.out.print("Enter XML file name:"); String xmlFile = bf.readLine(); File file = new File(xmlFile); if (file.exists()) { System.out.print("Enter XML tag name:"); ele = bf.readLine(); new SAXElementCount(xmlFile); } else { System.out.println("File not found!"); } } public SAXElementCount(String str) { try { SAXParserFactory parserFact = SAXParserFactory.newInstance(); SAXParser parser = parserFact.newSAXParser(); DefaultHandler dHandler = new DefaultHandler() { public void startElement(String uri, String name,

}; parser.parse(str, dHandler); } catch (Exception e) { e.printStackTrace(); } } }

} public void endDocument() { System.out.println("Total elements: " + startTag); }

String element, Attributes atri) throws SAXException { if (element.equals(ele)) { startTag++; }

XML Error Checking and Locating

package com.eMeter.xml.sax; import import import import org.xml.sax.*; org.xml.sax.helpers.*; javax.xml.parsers.*; java.io.*;

public class LocateError{ public static void main(String[] args) throws IOException{ BufferedReader bf = new BufferedReader(new InputStreamReader(System.in)); System.out.print("Enter XML file name:"); String xmlFile = bf.readLine(); new LocateError(xmlFile); } public LocateError(String str){ try{ File file = new File(str); if (file.exists()){ XMLReader reader = XMLReaderFactory.createXMLReader(); reader.parse(str); System.out.println(str + " is well-formed!"); } else{ System.out.println("File not found: " + str); } } catch (SAXParseException sax){ System.out.println(str + " isn't well-formed"); int line = sax.getLineNumber(); int col = sax.getColumnNumber(); System.out.println("Error is at line number "+ line + "and Column position "+ col); } catch (SAXException sax){} catch (IOException io){

System.out.println(io.getMessage()); } } }

Getting Attributes and its Value

package com.eMeter.xml.sax; import java.io.BufferedReader; import java.io.File; import java.io.InputStreamReader; import javax.xml.parsers.SAXParser; import javax.xml.parsers.SAXParserFactory; import import import import org.xml.sax.Attributes; org.xml.sax.SAXException; org.xml.sax.SAXParseException; org.xml.sax.helpers.DefaultHandler;

public class ReadAttributes { public static void main(String[] args) { try { BufferedReader bf = new BufferedReader(new InputStreamReader(System.in)); System.out.print("Enter a xml file name: "); String xmlFile = bf.readLine(); File file = new File(xmlFile); if (file.exists()){ //SAX-implementation: SAXParserFactory factory = SAXParserFactory.newInstance(); // Create SAX-parser SAXParser parser = factory.newSAXParser(); System.out.println("Name:\t" + "Value:"); //Define a handler SaxHandler handler = new SaxHandler(); // Parse the xml document parser.parse(xmlFile, handler); } else{ System.out.println("File not found!"); } } catch (Exception e) { e.printStackTrace(); } } private static class SaxHandler extends DefaultHandler { public void startElement(String uri, String localName, String qName, Attributes attrs) throws SAXParseException,SAXException { int length = attrs.getLength(); //Each attribute for (int i=0; i<length; i++) {

} }

// Get names and values to each attribute String name = attrs.getQName(i); System.out.print(name); String value = attrs.getValue(i); System.out.println("\t"+value); }

Locating the Notified Events

package com.eMeter.xml.sax; import java.io.BufferedReader; import java.io.File; import java.io.InputStreamReader; import import import import import org.xml.sax.Attributes; org.xml.sax.Locator; org.xml.sax.XMLReader; org.xml.sax.helpers.DefaultHandler; org.xml.sax.helpers.XMLReaderFactory;

public class WorkingSAXParserLocator extends DefaultHandler { private Locator locator; public static void main(String[] args) { try { BufferedReader bf = new BufferedReader(new InputStreamReader(System.in)); System.out.print("Enter xml file name: "); String xmlFile = bf.readLine(); File file = new File(xmlFile); if (file.exists()){ XMLReader parser = XMLReaderFactory.createXMLReader(); DefaultHandler handler = new WorkingSAXParserLocator(); parser.setContentHandler(handler); //parse xml file parser.parse(xmlFile); } else{ System.out.println("File not found!"); } } catch (Exception e) { System.err.println(e); } } public void setDocumentLocator(Locator locator) { this.locator = locator; } //All methods positions private void printLocation(String location) {

int line = locator.getLineNumber(); int column = locator.getColumnNumber(); System.out.println(location + " Line no: " + line + "\tColumn no: " + column); } //Document start public void startDocument() { printLocation("startDocument() method called at"); } //Document end public void endDocument() { printLocation("endDocument() method called at"); } //Element start public void startElement(String namespaceURI, String localName, String qualifiedName, Attributes atts) { printLocation("startElement() method called at "); } //Element end public void endElement(String namespaceURI, String localName, String qualifiedName) { printLocation("endElement() method called at \t"); } //characters public void characters(char[] text, int start, int length) { printLocation("characters() method called at \t"); } }

You might also like