从hadoop源码里摘取得一个小例子
import java.io.IOException;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
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;
import org.xml.sax.SAXException;
public class XmlReader {
public static void main(String[] args) throws ParserConfigurationException, Exception, IOException {
DocumentBuilderFactory docBuilderFactory
= DocumentBuilderFactory.newInstance();
//ignore all comments inside the xml file
docBuilderFactory.setIgnoringComments(true);
//allow includes in the xml file
docBuilderFactory.setNamespaceAware(true);
try {
docBuilderFactory.setXIncludeAware(true);
} catch (UnsupportedOperationException e) {
System.out.println("Failed to set setXIncludeAware(true) for parser "
+ docBuilderFactory.toString()
+ ":" + e.toString()
);
}
DocumentBuilder builder = docBuilderFactory.newDocumentBuilder();
Document doc = null;
Element root = null;
doc = builder.parse("G://test1.xml".toString());
root = doc.getDocumentElement();
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 (!"property".equals(prop.getTagName()))
System.out.println("bad conf file: element not <property>");
NodeList fields = prop.getChildNodes();
String attr = null;
String value = null;
String description=null;
boolean finalParameter = false;
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();
System.out.println("attr="+attr);
}
if ("value".equals(field.getTagName()) && field.hasChildNodes())
{
value = ((Text)field.getFirstChild()).getData();
System.out.println("value="+value);
}
if ("final".equals(field.getTagName()) && field.hasChildNodes())
{
finalParameter = "true".equals(((Text)field.getFirstChild()).getData());
System.out.println("attr="+attr);
}
if ("description".equals(field.getTagName()) && field.hasChildNodes())
{
description = ((Text)field.getFirstChild()).getData();
System.out.println("description="+description);
}
}
}
}