package com.xml.oper;
import java.util.ArrayList;
import java.util.List;
import org.apache.log4j.Logger;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
/**
* @ClassName: XmlOper
* @Description: 对XML文件进行读写操作,均为静态函数
* @author linwenming
* @date 2010-6-5
*
*/
public class XmlOper
{
private XmlOper()
{
}
/**
* 获取父结点parent的所有子结点<B>
*
* @author linwenming
* @date 2010-6-5
*/
public static NodeList getNodeList(Element parent)
{
return parent.getChildNodes();
}
/**
* 在父结点中查询指定名称的结点集
*
* @author linwenming
* @date 2010-6-5
*/
public static List<Element> getElementsByName(Element parent, String name)
{
NodeList nodeList = getNodeList(parent);
List<Element> tempList = new ArrayList<Element>();
for (int i = 0; i < nodeList.getLength(); i++)
{
Node node = nodeList.item(i);
if (node.getNodeName().equals(name))
{
tempList.add((Element) node);
}
}
logger.debug(parent.getNodeName() + "'s children of " + name
+ "'s num:" + tempList.size());
return tempList;
}
/**
* 获取指定Element的名称
*
* @author linwenming
* @date 2010-6-5
*/
public static String getElementName(Element element)
{
return element.getNodeName();
}
/**
* 获取指定Element的值
*
* @author linwenming
* @date 2010-6-5
*/
public static String getElementValue(Element element)
{
NodeList nl = getNodeList(element);
for (int i = 0; i < nl.getLength(); i++)
{
if (nl.item(i).getNodeType() == Node.TEXT_NODE) // is text node
{
logger.debug(element.getNodeName() + " has a Text Node.");
return element.getFirstChild().getNodeValue();
}
}
logger.error(element.getNodeName() + " hasn't a Text Node.");
return null;
}
/**
* 获取指定Element的属性attr的值
*
* @author linwenming
* @date 2010-6-5
*/
public static String getElementAttr(Element element, String attr)
{
return element.getAttribute(attr);
}
/**
* 设置指定Element的值
*
* @author linwenming
* @date 2010-6-5
*/
public static void setElementValue(Element element, String value)
{
NodeList nl = getNodeList(element);
for (int i = 0; i < nl.getLength(); i++)
{
Node nd = nl.item(i);
if (nd.getNodeType() == Node.TEXT_NODE)
{
nd.setNodeValue(value);
logger.debug("modify " + element.getNodeName()
+ "'s node value succe.");
return;
}
}
logger.debug("new " + element.getNodeName() + "'s node value succe.");
Node node = element.getOwnerDocument().createTextNode(value);
element.appendChild(node);
}
/**
* 设置结点Element的属性
*
* @author linwenming
* @date 2010-6-5
*/
public static void setElementAttr(Element element, String attr, String value)
{
element.setAttribute(attr, value);
}
/**
* 在parent下增加结点
*
* @author linwenming
* @date 2010-6-5
*/
public static void addElement(Element parent, Element child)
{
parent.appendChild(child);
}
/**
* 在parent下增加结点
*
* @author linwenming
* @date 2010-6-5
*/
public static void addElement(Element parent, String tagName)
{
Element element = parent.getOwnerDocument().createElement(tagName);
element.appendChild(element);
}
public static void addElement(Element parent, String tagName, String value)
{
Document doc = parent.getOwnerDocument();
Element child = doc.createElement(tagName);
setElementValue(child, value);
parent.appendChild(child);
}
/**
* 将父结点parent下的名称为tagName的结点移除
* @author linwenming
* @date 2010-6-7
*/
public static void removeElement(Element parent, String tagName)
{
logger.debug("remove " + parent.getNodeName()
+ "'s children by tagName " + tagName + " begin...");
NodeList nl = parent.getChildNodes();
for (int i = 0; i < nl.getLength(); i++)
{
Node nd = nl.item(i);
if (nd.getNodeName().equals(tagName))
{
parent.removeChild(nd);
logger.debug("remove child '" + nd + "' success.");
}
}
logger.debug("remove " + parent.getNodeName()
+ "'s children by tagName " + tagName + " end.");
}
/* 全局变量 */
static Logger logger = Logger.getLogger("XmlOper");
}
- 1
- 2
前往页