加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

XML 工具类分享

发布时间:2020-12-16 05:30:22 所属栏目:百科 来源:网络整理
导读:import javax.xml.parsers.DocumentBuilder;import javax.xml.parsers.DocumentBuilderFactory;import org.w3c.dom.Document;import org.w3c.dom.Element;import org.w3c.dom.NodeList;/*** 本类是专门解析XML文件的,主要用于为系统读取自己的配置文件时提
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;

/**

* 本类是专门解析XML文件的,主要用于为系统读取自己的配置文件时提供最方便的解析操作

* @author HX

*

*/

public class XmlManager {

	/**
	 * 
	 * 得到某节点下某个属性的值
	 * 
	 * @param element
	 *            要获取属性的节点
	 * 
	 * @param attributeName
	 *            要取值的属性名称
	 * 
	 * @return 要获取的属性的值
	 * 
	 * @author HX_2010-01-12
	 */

	public static String getAttribute(Element element,String attributeName) {

		return element.getAttribute(attributeName);

	}

	/**
	 * 
	 * 获取指定节点下的文本
	 * 
	 * @param element
	 *            要获取文本的节点
	 * 
	 * @return 指定节点下的文本
	 * 
	 * @author HX_2010-01-12
	 */

	public static String getText(Element element) {

		return element.getFirstChild().getNodeValue();

	}

	/**
	 * 
	 * 解析某个xml文件,并在内存中创建DOM树
	 * 
	 * @param xmlFile
	 *            要解析的XML文件
	 * 
	 * @return 解析某个配置文件后的Document
	 * 
	 * @throws Exception
	 *             xml文件不存在
	 */

	public static Document parse(String xmlFile) throws Exception {

		// 绑定XML文件,建造DOM树

		DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();

		DocumentBuilder db = dbf.newDocumentBuilder();

		Document domTree = db.parse(xmlFile);

		return domTree;

	}

	/**
	 * 
	 * 获得某节点下的某个子节点(指定子节点名称,和某个属性的值)<br>
	 * 
	 * 即获取parentElement下名字叫childName,并且属性attributeName的值为attributeValue的子结点
	 * 
	 * @param parentElement
	 *            要获取子节点的那个父节点
	 * 
	 * @param childName
	 *            要获取的子节点名称
	 * 
	 * @param attributeName
	 *            要指定的属性名称
	 * 
	 * @param attributeValue
	 *            要指定的属性的值
	 * 
	 * @return 符合条件的子节点
	 * 
	 * @throws Exception
	 *             子结点不存在或有多个符合条件的子节点
	 * 
	 * @author HX_2008-12-01
	 */

	public static Element getChildElement(Element parentElement,String childName,String attributeName,String attributeValue)
			throws Exception {

		NodeList list = parentElement.getElementsByTagName(childName);

		int count = 0;

		Element curElement = null;

		for (int i = 0; i < list.getLength(); i++) {

			Element child = (Element) list.item(i);

			String value = child.getAttribute(attributeName);

			if (true == value.equals(attributeValue)) {

				curElement = child;

				count++;

			}

		}

		if (0 == count) {

			throw new Exception("找不到个符合条件的子节点!");

		} else if (1 < count) {

			throw new Exception("找到多个符合条件的子节点!");

		}

		return curElement;

	}

	/**
	 * 
	 * 得到某节点下的某个子节点(通过指定子节点名称)<br>
	 * 
	 * 即获取parentElement下名字叫childName的子节点
	 * 
	 * @param parentElement
	 *            要获取子节点的父节点
	 * 
	 * @param childName
	 *            要获取的子节点名称
	 * 
	 * @return 符合条件的子节点
	 * 
	 * @throws Exception
	 *             找不到符合条件的子结点或找到多个符合条件的子节点
	 */

	public static Element getChildElement(Element parentElement,String childName) throws Exception {

		NodeList list = parentElement.getElementsByTagName(childName);

		Element curElement = null;

		if (1 == list.getLength()) {

			curElement = (Element) list.item(0);

		} else if (0 == list.getLength()) {

			throw new Exception("找不到个符合条件的子节点!");

		} else {

			throw new Exception("找到多个符合条件的子节点!");

		}

		return curElement;

	}

}

分享一个操作XML的工具类。欢迎拍砖。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读