// Canibalized from Hadoop <code>Configuration.loadResource()</code>. private void parseDocument(Document doc) throws IOException { Element root = doc.getDocumentElement(); if (!"configuration".equals(root.getTagName())) { throw new IOException("bad conf file: top-level element not <configuration>"); } processNodes(root); }
// Canibalized from Hadoop <code>Configuration.loadResource()</code>. private void processNodes(Element root) throws IOException { try { NodeList props = root.getChildNodes(); for (int i = 0; i < props.getLength(); i++) { Node propNode = props.item(i); if (!(propNode instanceof Element)) { continue; } Element prop = (Element) propNode; if (prop.getTagName().equals("configuration")) { processNodes(prop); continue; } if (!"property".equals(prop.getTagName())) { throw new IOException("bad conf file: element not <property>"); } NodeList fields = prop.getChildNodes(); String attr = null; String value = null; for (int j = 0; j < fields.getLength(); j++) { Node fieldNode = fields.item(j); if (!(fieldNode instanceof Element)) { continue; } Element field = (Element) fieldNode; if ("name".equals(field.getTagName()) && field.hasChildNodes()) { attr = ((Text) field.getFirstChild()).getData().trim(); } if ("value".equals(field.getTagName()) && field.hasChildNodes()) { value = ((Text) field.getFirstChild()).getData(); } } if (attr != null && value != null) { set(attr, value); } } } catch (DOMException e) { throw new IOException(e); } }