您的位置:首页 > 编程语言

jdom解析XML示例代码

2007-10-24 16:25 561 查看
package com.twthinker.config;

import java.io.*;
import java.util.*;
import org.jdom.*;
import org.jdom.input.*;

/**
*
Title: 读取xml文件信息

*
Des.c.r.i.p.tion: 从XML配置文件中获得配置信息。excerpt form jdom。

*
Copyright: Copyright (c) 2005

*
Company: www.fulitong.com.cn

* @author nazx
* @version 1.0
*/

public class XmlReader {
//private ErrorLogs errlogs = new ErrorLogs();
protected Element m_RootElement = null;

/**
* 构造函数。
* @param xmlFile 要读取的配置文件的绝对路径。
*/
public XmlReader(String xmlFile) {
try {
SAXBuilder builder = new SAXBuilder();
Document doc = null;
doc = builder.build(new FileInputStream(xmlFile));
m_RootElement = doc.getRootElement();
}
catch (IOException ex) {
System.out.println("XmlReader构造时出现IO错误:" + ex.toString());
}
catch (JDOMException ex1) {
System.out.println("XmlReader构造时分析XML文件出错:" + ex1.toString());
}
catch (Exception ex) {
System.out.println("XmlReader 构造出错:" + ex.toString());
}
}
//Element root = doc.getRootElement(); //得到根元素
//List books = root.getChildren(); //得到根元素所有子元素的集合
/**
* 从配置文件中获得全部配置信息。
* @return 配置信息组成的List对象。
*/
public List getElementList()
{
Element root = getElement(null, null) ;
//System.out.println("m_RootElement="+root);
List xmlinfo = root.getChildren(); //得到根元素所有子元素的集合
//System.out.println("xmlinfo.size():"+xmlinfo.size());
return xmlinfo;
}
/**
* 从配置文件中获得配置信息。
* @param key 要获取的配置节点名称。
* @param curRootName 查找的起始节点名称,如果为null从根开始查找。
* @return 配置的字符串。
*/
public String getElementValue(String curRootName, String key) {
String value = null;
Element curRoot = getElement(null, curRootName);
if (null == curRoot) {
curRoot = m_RootElement;
}
Element keyNode = getElement(curRoot, key);
if (null != keyNode) {
value = keyNode.getTextTrim();
}
return value;
}

/**
* 根据名字获得节点。广度遍历,递归调用。
* @param nodeName 节点的名字。
* @param curRoot 从开始查找的起始节点,如果为null从根开始查找。
* @return 返回从指定节点下找到的第一个节点。如果没有返回null。
*/
public Element getElement(Element curRoot, String nodeName) {
Element retElement = null;

if (null == nodeName)
return m_RootElement;

if (null == curRoot) {
curRoot = m_RootElement;
}

if (null != curRoot) {
retElement = curRoot.getChild(nodeName);
if (null == retElement) {
List nestElements = curRoot.getChildren();
Iterator iterator = nestElements.iterator();
while (iterator.hasNext() && null == retElement) {
retElement = getElement( (Element) iterator.next(), nodeName);
}
}
}

return retElement;
}

/**
* 获得指定节点的属性。
* @param elementName 节点的名称。
* @param attName 要获得的属性的名称。
* @return 要查找的属性的值。
*/
public String getElementAtrribute(String elementName, String attName)
{
Element el = getElement(null, elementName);
if (null == el) return null;
return el.getAttributeValue(attName);
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: