import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.w3c.dom.Text;
public class TestDOM {
public static void main(String[] args) throws Exception {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder parser = factory.newDocumentBuilder();
Document document = parser.parse("zooinventory.xml");
Element inventory = document.getDocumentElement();
NodeList animals = inventory.getElementsByTagName("Animal");
System.out.println("Animals = ");
for (int i = 0; i < animals.getLength(); i++) {
String name = DOMUtil.getSimpleElementText((Element) animals.item(i), "Name");
String species = DOMUtil.getSimpleElementText((Element) animals.item(i), "Species");
System.out.println(" " + name + " (" + species + ")");
}
Element foodRecipe = DOMUtil.getFirstElement((Element) animals.item(1), "FoodRecipe");
String name = DOMUtil.getSimpleElementText(foodRecipe, "Name");
System.out.println("Recipe = " + name);
NodeList ingredients = foodRecipe.getElementsByTagName("Ingredient");
for (int i = 0; i < ingredients.getLength(); i++)
System.out.println(" " + DOMUtil.getSimpleElementText((Element) ingredients.item(i)));
}
}
class DOMUtil {
public static Element getFirstElement(Element element, String name) {
NodeList nl = element.getElementsByTagName(name);
if (nl.getLength() < 1)
throw new RuntimeException("Element: " + element + " does not contain: " + name);
return (Element) nl.item(0);
}
public static String getSimpleElementText(Element node, String name) {
Element namedElement = getFirstElement(node, name);
return getSimpleElementText(namedElement);
}
public static String getSimpleElementText(Element node) {
StringBuffer sb = new StringBuffer();
NodeList children = node.getChildNodes();
for (int i = 0; i < children.getLength(); i++) {
Node child = children.item(i);
if (child instanceof Text)
sb.append(child.getNodeValue());
}
return sb.toString();
}
}
//File: zooinventory.xml
/*<?xml version="1.0" encoding="UTF-8"?>
<Element2>
<Element3 animalClass="mammal">
<Name>A</Name>
<Species>B</Species>
<Habitat>C</Habitat>
<Food>D</Food>
<Temperament>E</Temperament>
<Weight>1</Weight>
</Element3>
<Element3 animalClass="mammal">
<Name>F</Name>
<Species>G</Species>
<Habitat>H</Habitat>
<ElementA>
<Name>I</Name>
<Ingredient>I1</Ingredient>
<Ingredient>I2</Ingredient>
<Ingredient>I2</Ingredient>
</ElementA>
<Temperament>J</Temperament>
<Weight>4</Weight>
</Element3>
</Element2>
*/
|