xml and java
I want to use xml as a database in my web project...
But I don't know how can I use this.........
Please help me..................
But I don't know how can I use this.........
Please help me..................
Replies
-
viswasknithere i want give detail of my problem...
A xml file book.xml
cobol
roy
java
herbert
c++
robert
coldfusion
allaire
xml unleashed
morrison
jrun
allaire
Now i want a jsp page to take data of book.xml file..............
I use tomcat 6.018 as a server............... -
sookieJSP Part, I am leaving to you, if get stuck anywhere, feel free to ask. Below is how to read .xml file in Java file.
Pre-requisite: Knowledge of Parsers -SAX and DOM.
Taking your Books.xml example only
Books.xml
Now how to retrieve this data in Java program. There are two approaches of doing so:
cobol
roy
java
herbert
c++
robert
coldfusion
allaire
xml unleashed
morrison
1. Using SAX [Simple API for XML]
package myjava; import java.io.File; import java.io.IOException; 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 XMLReaderUsingSAX { public static void main(String[] args) throws IOException { String xmlFile = "I:/Books.xml"; System.out.print("XML file name:" + xmlFile); XMLReaderUsingSAX detail = new XMLReaderUsingSAX(xmlFile); } public XMLReaderUsingSAX(String str) { try { File file = new File(str); /*checks if the file exists */ if (file.exists()) { SAXParserFactory parserFact = SAXParserFactory.newInstance(); SAXParser parser = parserFact.newSAXParser(); System.out.println("XML Data: "); DefaultHandler dHandler = new DefaultHandler() { boolean title; boolean author; boolean mail; public void startElement(String uri, String localName, String element_name, Attributes attributes) throws SAXException { if (element_name.equals("title")) { title = true; } if (element_name.equals("author")) { author = true; } } public void characters(char[] ch, int start, int len) throws SAXException { String str = new String(ch, start, len); if (title) { System.out.println("Title:" + str); title = false; } if (author) { System.out.println("Author:" + str); author = false; } } }; parser.parse(str, dHandler); } else { System.out.println("File not found!"); } } catch (Exception e) { System.out.println("XML File hasn't any elements"); e.printStackTrace(); } } }
Output:
XML file name:I:/Books.xmlXML Data:
In above Java class, SAXParser class parses the XML file using parse() method. The characters() method prints data until value of element in startElement() is true
Title:cobol
Author:roy
Title:java
Author:herbert
Title:c++
Author:robert
Title:coldfusion
Author:allaire
Title:xml unleashed
Author:morrison
Characters(char[] ch, int start, int len) method retrieves identification of character data. The Parser calls this method and to report every character data encountered . If any error occurs it throws the SAXException. This method takes the following parameters:
- ch: This is the characters of XML document.
- start: This is staring position in an array.
- len: This is the number of characters to read from an array.
2. Using DOM[Document Object Model]
package myjava; import java.io.File; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.NodeList; public class XMLReaderUsingDOM { public static void main(String argv[]) { try { File file = new File("I:/Books.xml"); DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder db = dbf.newDocumentBuilder(); Document doc = (Document) db.parse(file); doc.getDocumentElement().normalize(); NodeList nodeList = doc.getElementsByTagName("book"); for (int s = 0; s < nodeList.getLength(); s++) { Node firstNode = nodeList.item(s); if (firstNode.getNodeType() == Node.ELEMENT_NODE) { Element firstElement = (Element) firstNode; NodeList fstNmElmntLst = firstElement.getElementsByTagName("title"); Element fstNmElmnt = (Element) fstNmElmntLst.item(0); NodeList fstNm = fstNmElmnt.getChildNodes(); System.out.println("Title: " + ((Node) fstNm.item(0)).getNodeValue()); NodeList lstNmElmntLst = firstElement.getElementsByTagName("author"); Element lstNmElmnt = (Element) lstNmElmntLst.item(0); NodeList lstNm = lstNmElmnt.getChildNodes(); System.out.println("Author: " + ((Node) lstNm.item(0)).getNodeValue()); } } } catch (Exception e) { e.printStackTrace(); } } }
Output:
Title: cobol
In case 2, "book" is kind of hard-coded.
Author: roy
Title: java
Author: herbert
Title: c++
Author: robert
Title: coldfusion
Author: allaire
Title: xml unleashed
Author: morrison
For more information about SAX and DOM, check following
#-Link-Snipped-#
#-Link-Snipped-#
Let me know, if you need any more details. Thanks !
You are reading an archived discussion.
Related Posts
hi friends i will required some sheet as per IS-800 2007 calculation of i-beam please help
Ok. Enough of the fun we got from Sci-fi movies. Enough of the awe-struck kodak moments watching the movie where we just appreciated the scenes and moved on without doing...
do u have an idea on advanced technology.pls post the topics its urgent
hello everyone..
can show me the frequencies and decibel circuit that build with 555timer or other component that produce tone connected to earphone with battery 9V supply..
i gonna die...
how can we check the datatype of the input that the user has entered at runtime in C++?