/**
* cdXmlOperate<p>
* ~写?Qjava_god<p>
**/
public class XmlOperate
{
/**
* Ҏ名称QgetNodeList<p>
* Ҏ功能Q获取父l点parent的所有子l点<p>
* 参数说明Q@param parent
* 参数说明Q@return <p>
* q回QNodeList <p>
* 作者:luoc
* 日期Q?005-6-22
**/
public static NodeList getNodeList(Element parent)
{
return parent.getChildNodes();
}
/**
* Ҏ名称QgetElementsByName<p>
* Ҏ功能Q在父结点中查询指定名称的结炚w <p>
* 参数说明Q@param parent
* 参数说明Q@param name
* 参数说明Q@return <p>
* q回QElement[] <p>
* 作者:luoc
* 日期Q?005-6-22
**/
public static Element [] getElementsByName(Element parent,String name)
{
ArrayList resList=new ArrayList();
NodeList nl=getNodeList(parent);
for(int i=0;i<nl.getLength();i++)
{
Node nd=nl.item(i);
if(nd.getNodeName().equals(name))
{
resList.add(nd);
}
}
Element [] res=new Element [resList.size()];
for(int i=0;i<resList.size();i++)
{
res[0]=(Element)resList.get(i);
}
logger.debug(parent.getNodeName()+"'s children of "+name+
"'s num:"+res.length);
return res;
}
/**
* Ҏ名称QgetElementName<p>
* Ҏ功能Q获取指定Element的名U?nbsp; <p>
* 参数说明Q@param element
* 参数说明Q@return <p>
* q回QString <p>
* 作者:luoc
* 日期Q?005-6-22
**/
public static String getElementName(Element element)
{
return element.getNodeName();
}
/**
* Ҏ名称QgetElementValue<p>
* Ҏ功能Q获取指定Element的?lt;p>
* 参数说明Q@param element
* 参数说明Q@return <p>
* q回QString <p>
* 作者:luoc
* 日期Q?005-6-22
**/
public static String getElementValue(Element element)
{
NodeList nl=element.getChildNodes();
for(int i=0;i<nl.getLength();i++)
{
if(nl.item(i).getNodeType()==Node.TEXT_NODE)//是一个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;
}
/**
* Ҏ名称QgetElementAttr<p>
* Ҏ功能Q获取指定Element的属性attr的?nbsp; <p>
* 参数说明Q@param element
* 参数说明Q@param attr
* 参数说明Q@return <p>
* q回QString <p>
* 作者:luoc
* 日期Q?005-6-22
**/
public static String getElementAttr(Element element,String attr)
{
return element.getAttribute(attr);
}
/**
* Ҏ名称QsetElementValue<p>
* Ҏ功能Q设|指定Element的?nbsp; <p>
* 参数说明Q@param element
* 参数说明Q@param val <p>
* q回Qvoid <p>
* 作者:luoc
* 日期Q?005-6-22
**/
public static void setElementValue(Element element,String val)
{
Node node=element.getOwnerDocument().createTextNode(val);
NodeList nl=element.getChildNodes();
for(int i=0;i<nl.getLength();i++)
{
Node nd=nl.item(i);
if(nd.getNodeType()==Node.TEXT_NODE)//是一个Text Node
{
nd.setNodeValue(val);
logger.debug("modify "+element.getNodeName()+"'s node value succe.");
return;
}
}
logger.debug("new "+element.getNodeName()+"'s node value succe.");
element.appendChild(node);
}
/**
* Ҏ名称QsetElementAttr<p>
* Ҏ功能Q设|结点Element的属?lt;p>
* 参数说明Q@param element
* 参数说明Q@param attr
* 参数说明Q@param attrVal <p>
* q回Qvoid <p>
* 作者:luoc
* 日期Q?005-6-22
**/
public static void setElementAttr(Element element,
String attr,String attrVal)
{
element.setAttribute(attr,attrVal);
}
/**
* Ҏ名称QaddElement<p>
* Ҏ功能Q在parent下增加结点child<p>
* 参数说明Q@param parent
* 参数说明Q@param child <p>
* q回Qvoid <p>
* 作者:luoc
* 日期Q?005-6-22
**/
public static void addElement(Element parent,Element child)
{
parent.appendChild(child);
}
/**
* Ҏ名称QaddElement<p>
* Ҏ功能Q在parent下增加字W串tagName生成的结?lt;p>
* 参数说明Q@param parent
* 参数说明Q@param tagName <p>
* q回Qvoid <p>
* 作者:luoc
* 日期Q?005-6-22
**/
public static void addElement(Element parent,String tagName)
{
Document doc=parent.getOwnerDocument();
Element child=doc.createElement(tagName);
parent.appendChild(child);
}
/**
* Ҏ名称QaddElement<p>
* Ҏ功能Q在parent下增加tagName的Textl点Q且gؓtext<p>
* 参数说明Q@param parent
* 参数说明Q@param tagName
* 参数说明Q@param text <p>
* q回Qvoid <p>
* 作者:luoc
* 日期Q?005-6-22
**/
public static void addElement(Element parent,String tagName,String text)
{
Document doc=parent.getOwnerDocument();
Element child=doc.createElement(tagName);
setElementValue(child,text);
parent.appendChild(child);
}
/**
* Ҏ名称QremoveElement<p>
* Ҏ功能Q将父结点parent下的名称为tagName的结点移?lt;p>
* 参数说明Q@param parent
* 参数说明Q@param tagName <p>
* q回Qvoid <p>
* 作者:luoc
* 日期Q?005-6-22
**/
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");
}