0

我在这里处理一个问题,获取尺寸计算价格。我只需要加上属性价格,但我无法弄清楚如何走得更远。我试过做一个嵌套的for循环,但没有成功。

<?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>

我的java程序有这个:

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);

            }
        }
}
4

1 回答 1

1

如果您只对 Pizza 节点感兴趣,可以使用 getElementsByTagName() 方法返回它们。

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);
            }

        }
}
于 2012-07-31T00:16:00.167 回答