Bin's

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
package org.sws.utils;

import java.io.File;
import java.io.IOException;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;

import org.sws.model.Server;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;

public class ConfigurationUtil {
private String conf = "configuration.xml";
//Document是XML在内存中的一个镜像,获取了Document就可以通过对内存的操作来实现对XML的操作。
private Document doc = null ;

public Server getConfig(){
//从DocumentBuilderFactory中获取一个DocumentBuilder的实例
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
try {
DocumentBuilder db = dbf.newDocumentBuilder();
//使用DocumentBuilder来产生一个Document实例
doc = db.parse(new File(conf));

//Element代表XML中的一个标签对,可用于获取属性值
Element element = doc.getDocumentElement();
//获取该Element的标签名
System.out.println("Root Element : "+element.getTagName());
//通过标签名来获取多个节点
NodeList nodeList = doc.getElementsByTagName("Service");
System.out.println("NodeList Length : "+nodeList.getLength());

Node node = nodeList.item(0);
System.out.println("First Node : "+node.getNodeName());
//通过Agetttributes()方法来获取一个NamedNodeMap实例,该实例包含标签属性值
NamedNodeMap attrs = node.getAttributes();

for (int i=0; i<attrs.getLength(); i++){
Node attr = attrs.item(i);
System.out.println(attr.getNodeName()+" : "+attr.getNodeValue());
}

NodeList childNodes = node.getChildNodes();

for (int i=0; i<childNodes.getLength(); i++){
Node child = childNodes.item(i);
//当子节点是一个Element时才能获取该元素的标签名和属性值
if (child instanceof Element)
{
System.out.println(child.getNodeName()
+" : "+child.getFirstChild().getNodeValue());
}
}
} catch (ParserConfigurationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SAXException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null ;
}

}

XML文件:

<?xml version='1.0' encoding='utf-8'?>
<Server>
<Service name="SampleWebServer">
<Listen>8080</Listen>
<Protocol>HTTP/1.1</Protocol>
<Host>localhost</Host>
<Root>/html</Root>
</Service>

<Service name="SampleWebServer1">
<Listen>8081</Listen>
<Protocol>HTTP/1.1</Protocol>
<Host>localhost</Host>
<Root>/html</Root>
</Service>
</Server>



posted on 2012-01-25 14:19  Jesuca  阅读(1756)  评论(0编辑  收藏  举报