0

I'm working a problem here that gets the size calculates the price. I just need to tack on attribute prices, but I'm unable to figure out how to go further. I've tried making a nested for loop, but have been unsuccessful.

<?xml version= "1.0" encoding= "UTF-8" standalone="yes" ?>

<PizzaParlor>
    <Order>
        <Pizza Size="large">
            <Vegetarian>
                <Mushroom Price="1.99">
                </Mushroom>
            </Vegetarian>

        </Pizza>
        <Pizza Size="small">
            <Vegetarian>
                <Spinach Price="1.45">
                </Spinach>
            </Vegetarian>

        </Pizza>
        <Pizza Size="medium">
            <Vegetarian>
                <Pineapple Price="1.79">
                </Pineapple>
            </Vegetarian>

        </Pizza>
        <Pizza Size="small">
            <Vegetarian>
                <Mushroom Price="1.99">
                </Mushroom>
            </Vegetarian>

        </Pizza>
        <Pizza Size="large">
            <Vegetarian>
                <Mushroom Price="1.99">
                </Mushroom>
            </Vegetarian>
        </Pizza>
            <Pizza Size="large">
            <non-vegetarian>
                <Anchovies Price="1.99">
                </Anchovies>
            </non-vegetarian>

        </Pizza>
        <Pizza Size="small">
            <non-vegetarian>
                <Ham Price="1.45">
                </Ham>
            </non-vegetarian>

        </Pizza>
        <Pizza Size="medium">
            <non-vegetarian>
                <Anchovies Price="1.79">
                </Anchovies>
            </non-vegetarian>

        </Pizza>
        <Pizza Size="small">
            <non-vegetarian>
                <Pepperoni Price="2.49">
                </Pepperoni>
            </non-vegetarian>

        </Pizza>
        <Pizza Size="large">
            <non-vegetarian >
                <Chicken Price="2.99">
                </Chicken>
            </non-vegetarian >
        </Pizza>
    </Order>
</PizzaParlor>

I have this for my java program:

package pizza;

import java.io.*;
import javax.xml.parsers.*;
import org.w3c.dom.*;
import org.xml.sax.*;

public class Pizza
{
    public static void main (String [] args)
        throws
        IOException,
        ParserConfigurationException,
        SAXException
        {
            File CFile = new File ("pizzaparlor.xml");
            DocumentBuilderFactory factory =
                DocumentBuilderFactory.newInstance ();
            factory.setIgnoringComments (true);
            factory.setIgnoringElementContentWhitespace (true);
            factory.setValidating (true);
            DocumentBuilder builder = factory.newDocumentBuilder ();
            Document document = builder.parse (CFile);
            Element root = document.getDocumentElement ();

            Node orderNode = root.getFirstChild();
            Node Pizza = orderNode.getFirstChild();



            int countofPizzas = 0;

            for(int i = 0 ; Pizza!=null; i ++){

                countofPizzas ++;
                Pizza = Pizza.getNextSibling();

            }
            System.out.println(countofPizzas); 

            double price = 0.0;

            NodeList Orders = root.getFirstChild().getChildNodes();


            for (int i = 0; i < Orders.getLength() ; i++)
            {
                Element pizzaSize = (Element) Orders.item(i);
                String pSize = pizzaSize.getAttribute("Size");


                if (pSize.equalsIgnoreCase("Large"))
                    price = 10.0;
                if (pSize.equalsIgnoreCase("Medium"))
                    price = 7.0;
                if (pSize.equalsIgnoreCase("Small"))
                    price = 5.0;

                System.out.println("Pizza " + i + " " + pSize + " " + price);

            }
        }
}

1 Answer 1

1

If you are only interested in the Pizza nodes, you can use the getElementsByTagName() method to return them.

import java.io.*;
import javax.xml.parsers.*;
import org.w3c.dom.*;
import org.xml.sax.*;

public class Pizza
{
    public static void main (String [] args)
        throws
        IOException,
        ParserConfigurationException,
        SAXException
        {
            File CFile = new File ("pizzaparlor.xml");
            DocumentBuilderFactory factory =
                DocumentBuilderFactory.newInstance ();
            factory.setIgnoringComments (true);
            factory.setIgnoringElementContentWhitespace (true);
            factory.setValidating (false);
            DocumentBuilder builder = factory.newDocumentBuilder ();
            Document document = builder.parse (CFile);

            NodeList pizzas = document.getElementsByTagName("Pizza");

            for (int i = 0; i < pizzas.getLength() ; i++)
            {
                Element pizzaSize = (Element) pizzas.item(i);
                String pSize = pizzaSize.getAttribute("Size");

                if (pSize.equalsIgnoreCase("Large"))
                    price = 10.0;
                if (pSize.equalsIgnoreCase("Medium"))
                    price = 7.0;
                if (pSize.equalsIgnoreCase("Small"))
                    price = 5.0;

                System.out.println("Pizza " + i + " " + pSize + " " + price);
            }

        }
}
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.