bernicemagic
New Member
For an XML keyword search project, users may search any value in the XML code:\[code\]<?xml version="1.0" encoding="UTF-8"?><company><staff id="1001"> <firstname>sachin</firstname> <lastname>tendulkar</lastname> <nickname>TON</nickname> <salary>100000</salary></staff><staff id="2001"> <firstname>MS</firstname> <lastname>Dhoni</lastname> <nickname>MSD</nickname> <salary>200000</salary></staff> <staff id="3001"> <firstname>yuraj</firstname> <lastname>singh</lastname> <nickname>yuvi</nickname> <salary>200000</salary></staff></company>\[/code\]If the user searches for \[code\]20000\[/code\], the result will available in ID \[code\]1001\[/code\] and \[code\]2001\[/code\] so the output should be like:\[code\] ms dhoni msd 200000 yuraj singh yuvi 20000\[/code\]I would like to do this in Java. Here is what I've written so far:\[code\]package a;import javax.xml.parsers.DocumentBuilderFactory;import javax.xml.parsers.DocumentBuilder;import org.w3c.dom.Document;import org.w3c.dom.NodeList;import org.w3c.dom.Node;import org.w3c.dom.Element;import java.io.File;public class TestJava{ public static void TestJava(String s) { try { File fXmlFile = new File("E:/xml/xml/src/a/test.xml"); DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); DocumentBuilder dBuilder = dbFactory.newDocumentBuilder(); Document doc = dBuilder.parse(fXmlFile); doc.getDocumentElement().normalize(); System.out.println("Root element :" + doc.getDocumentElement().getNodeName()); NodeList nList = doc.getElementsByTagName("staff"); System.out.println("----------------------------"); for (int temp = 0; temp < nList.getLength(); temp++) { Node nNode = nList.item(temp); System.out.println("\nCurrent Element :" + nNode.getNodeName()); if (nNode.getNodeType() == Node.ELEMENT_NODE) { Element eElement = (Element) nNode; if(eElement.getElementsByTagName("salary").item(0).getTextContent().equals(s)) { System.out.println("Staff id : " + eElement.getAttribute("id")); System.out.println("First Name : " + eElement.getElementsByTagName("firstname").item(0).getTextContent()); System.out.println("Last Name : " + eElement.getElementsByTagName("lastname").item(0).getTextContent()); System.out.println("Nick Name : " + eElement.getElementsByTagName("nickname").item(0).getTextContent()); System.out.println("Salary : " + eElement.getElementsByTagName("salary").item(0).getTextContent()); } } } } catch (Exception e) { e.printStackTrace(); } }}\[/code\]