我在这里遇到一个问题,即大小计算价格。我只需要确定属性价格,但我无法弄清楚如何进一步发展。我试过制作一个嵌套的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);
}
}
}
答案 0 :(得分: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);
}
}
}