Skip to main content

  | मौसम…

411 समाचार
Public archive edition · Attributed source reporting with original dates · AI drafts are excluded

411 REFERENCE · Wikibooks

XML - Managing Data Exchange/Parsing XML files/Answers

Reference material by Wikibooks contributors. This retains its source identity and is not 411 news reporting.

This java class file is associated with the movies.xml file used in the chapter. Place this java file and movies.xml in the same directory. After compiling, this needs to be run from a command window and the format is: > java SPParser movies.xml import javax.xml.parsers.*; import org.xml.sax.*; import org.w3c.dom.*; import java.io.*; public class SPParser { static Document doc; public SPParser(String filename) { //filename S/B the name of the XML file to parse File file = new File(filename); try { DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder parser = factory.newDocumentBuilder(); doc = parser.parse(file); System.out.println(file + " is well-formed."); } catch (SAXException e) { System.out.println( e.getMessage()); } catch (IOException e) { System.out.println( e.getMessage()); } catch (ParserConfigurationException e) { System.out.println("Could not locate a JAXP parser"); } } public void readData(Node n) { System.out.println("Printing data and attributes"); NamedNodeMap attributes = n.getAttributes(); String strAttributes = "Production Company- '" + attributes.item(0).getNodeValue(); if (attributes.getLength() == 2) //There are two attributes in the movies.xml file strAttributes += "' , Loaned To - '" + attributes.item(1).getNodeValue() + "' ,"; else strAttributes += "' , Not out , "; NodeList values = n.getChildNodes(); String dataString = "Movies Data: " + strAttributes; int ancestor = 0; for (int i = 0; i < values.getLength(); i++) { Node child = values.item(i); if (child.getNodeType() != Node.TEXT_NODE) { String insert = child.getFirstChild().getNodeValue(); if (insert.trim().length() != 0 && ancestor == 0) { dataString += "Movie Title - '"+insert+"', "; ancestor = 1; } else if (insert.trim().length() != 0 && ancestor == 1) { dataString += "Director - '"+insert+"'."; ancestor = 0; } } }//End of for-loop System.out.println(dataString); System.out.println(); }//End of insertStatements() public static void main(String[] args) { SPParser p = new SPParser("movies.xml"); NodeList n = doc.getElementsByTagName("movie"); for (int i = 0; i < n.getLength(); i++) { p.readData(n.item(i)); } }//End of main() }//End of SPParser class