Re: Help Reading XML file
On 2006-11-01 15:01:18 -0800, petedawn@gmail.com said:
i have got this so far but it only reads the first level and doesnt go
any deeper.
DocumentBuilderFactory docBuilderFactory =
DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder();
Document doc = docBuilder.parse (new File("configuration.xml"));
doc.getDocumentElement ().normalize ();
Node n;
NodeList nodes = doc.getDocumentElement().getChildNodes();
for( int i=0 ; i<nodes.getLength(); i++ )
{
n = nodes.item( i );
if( n.getNodeType() == Node.ELEMENT_NODE )
{
if( n.getNodeName().equals( "b" ) )
{
NamedNodeMap attrs = n.getAttributes();
String s = attrs.getNamedItem("name").getNodeValue();
String s2 =
attrs.getNamedItem("value").getNodeValue();
}
}
}
i am able to read the first bit, which is <b name="test0" value="0">
but how do i get to the next level .thanks.
Since this is a tree structure, the easiest way to traverse it would be
with recursion:
public static void main(String[] args)
throws ParserConfigurationException, IOException, SAXException {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
Document doc = factory.newDocumentBuilder().parse(new
File("/Users/kevin/Desktop/configuration.xml"));
traverse(doc, 0);
}
// note recursion
public static void traverse(Node node, int level) {
// Process node here, then move on to the next child
// If there are any children, visit each one
NodeList list = node.getChildNodes();
for (int i = 0; i < list.getLength(); i++) {
// Get child node
Node childNode = list.item(i);
// Visit child node
traverse(childNode, level + 1);
}
}
There is NO error checking for null pointers in this code; you'll need
to adapt this.
Kevin