Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Java Programming: Complete the following code for the Object next() method which

ID: 3839355 • Letter: J

Question

Java Programming:

Complete the following code for the Object next() method which should return the next element or textual element (String) in the XML file. Use the XML tokenizer provided.
Should throw XMLParseException if a problem is found by the tokenizer or if attributes are duplicated or if an ending tag does not match the start tag.
  


import java.io.Reader;


public class XMLReader {

   private XMLTokenizer _tokenizer;

  
   public XMLReader(Reader r) {
       _tokenizer = new XMLTokenizer(r);
   }
  
  
   public Object next() throws XMLParseException {
  
      

       throw new XMLParseException("internal error: " + _tokenizer);
   }
}

Explanation / Answer

Hi,

Please see the classe below:

XMLTokenizer.java

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.io.Reader;
import java.util.StringTokenizer;


public class XMLTokenizer {
   private static String[] xmlLine ;
   public XMLTokenizer(Reader r){
       xmlLine = new String[1000];
       readFromFile(r);
      
   }

   /**
   * Reading the component measures from file
   * @param filename
   */
   public static void readFromFile(Reader r){
       BufferedReader br = null;
       int counter =0;

       try {

           br = new BufferedReader(r);

           String sCurrentLine;


           while ((sCurrentLine = br.readLine()) != null) {
               xmlLine[counter] = sCurrentLine;
               counter++;
           }

       } catch (IOException e) {

           e.printStackTrace();

       }
   }

   public String[] getXmlLine() {
       return xmlLine;
   }

   public void setXmlLine(String[] xmlLine) {
       this.xmlLine = xmlLine;
   }
}

XMLReader.java

import javax.management.modelmbean.XMLParseException;

import java.io.Reader;

public class XMLReader {
   private XMLTokenizer _tokenizer;
   private int counter =0;


   public XMLReader(Reader r) {
       _tokenizer = new XMLTokenizer(r);
   }

/**
* To get the next token
* @return
* @throws XMLParseException
*/
   public Object next() throws XMLParseException {
       String tag = "";
       String val = "";
       String xml = _tokenizer.getXmlLine()[counter] ;
       if(null!= xml && !"".equalsIgnoreCase(xml)){
           //Getting the start tag indices
           int startTagOpen = xml.indexOf('<');
           int startTagClose = xml.indexOf('>');
          
           if(startTagOpen == 0){
               for(int i=1;i<startTagClose;i++){
                   tag =tag + xml.charAt(i);
               }
           }
           else{
               throw new XMLParseException("internal error: " + _tokenizer);
           }

           //Creating the EndTag.
           String endTag = "</"+tag+">";
           if(xml.contains(endTag)){
               int lastIndex = xml.lastIndexOf(endTag);
               if(lastIndex > 0){
                   for(int i=startTagClose+1;i<lastIndex;i++){
                       val =val + xml.charAt(i);
                   }
               }
               else{
                   throw new XMLParseException("internal error: " + _tokenizer);
               }

           }
           else{
               throw new XMLParseException("internal error: " + _tokenizer);
           }
           counter ++;
       }
       return val;

   }
}

Test.java

import java.io.FileNotFoundException;
import java.io.FileReader;

import javax.management.modelmbean.XMLParseException;


public class Test {

  
   public static void main(String[] args){
       //Creating XMLReader class object
       try {
           XMLReader reader = new XMLReader(new FileReader("somexml.xml"));
           String next = (String) reader.next();
           while(null!=next&& !"".equalsIgnoreCase(next)){
               System.out.println(next);
               next = (String) reader.next();
           }
       } catch (FileNotFoundException e) {
           // TODO Auto-generated catch block
           e.printStackTrace();
       } catch (XMLParseException e) {
           // TODO Auto-generated catch block
           e.printStackTrace();
       }
   }
}

somexml.xml'

<name>Helen</name>
<age>32</age>
<job>Teacher</job>

Sample output:

Helen
32
Teacher

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote