packageorg.xml;importjava.util.List;importorg.dom4j.Attribute;importorg.dom4j.Element;public class XmlOper extendsXmlBuilder {publicXmlOper() {super();
}publicXmlOper(String path) {super(path);
}//根据路径查询指定XML元素
private List>QueryXMLByPath(String xpath) {
List> list = this.GetDoc().selectNodes(xpath);returnlist;
}//根据名称查询Root下子元素,返回第一个匹配子元素
privateElement QueryXMLByName(String name) {
Element elem= null;
List> list = QueryXMLByPath("/" + this.GetRootName() + "/*");int len =list.size();for (int i = 0; i < len; i++) {
Element sub=(Element) list.get(i);if(name.equals(sub.getName())) {
elem=sub;break;
}
}returnelem;
}//通过属性查询指定名称元素
publicElement QueryXML(String name, String attName, String attVal) {
List> list = QueryXMLByPath("/" + this.GetRootName() + "/" +name);int len =list.size();
Element elem= null;for (int i = 0; i < len; i++) {
Element sub=(Element) list.get(i);
Attribute att=HasAttribute(sub, attName);if (att != null &&attVal.equals(att.getValue())) {
elem=sub;break;
}
}returnelem;
}//查询XML中指定名称的第一个匹配节点
publicElement QueryXML(String name) {if (name == this.GetRootName()) {return this.GetRoot();
}returnQueryXMLByName(name);
}//在指定元素下添加子元素
publicElement AddElement(Element elem, String name) {if (elem != null) {
elem=elem.addElement(name);
}returnelem;
}//判断XML父元素中是否包含指定名称的子元素
privateElement HasElement(Element parent, String name) {
Element has= null;
List> list =parent.elements();for (int i = 0; i < list.size(); i++) {
Element sub=(Element) list.get(i);if(name.equals(sub.getName())) {
has=sub;break;
}
}returnhas;
}//判断XML元素中是否包含指定名称的属性
privateAttribute HasAttribute(Element elem, String attName) {
Attribute has= null;
List> list =elem.attributes();for (int i = 0; i < list.size(); i++) {
Attribute att=(Attribute) list.get(i);if(attName.equals(att.getName())) {
has=att;break;
}
}returnhas;
}//XML指定元素中删除子元素
public booleanRemoveElement(Element parent, String name) {boolean succ = false;if (parent != null && !parent.isTextOnly()) {
Element sub=HasElement(parent, name);if (sub != null) {
succ=parent.remove(sub);
}
}returnsucc;
}//XML指定元素下添加属性
publicElement AddAttribute(Element elem, String attName, String attVal) {if (elem != null) {
elem.addAttribute(attName, attVal);
}returnelem;
}//XML指定元素中删除指定属性
public booleanRemoveAttribute(Element elem, String attName) {boolean succ = false;if (elem != null) {
Attribute has=HasAttribute(elem, attName);if (has != null) {
succ=elem.remove(has);
}
}returnsucc;
}//XML指定元素下添加值
public Element AddText(Element elem, String text) throwsException {if (elem != null) {if (!elem.isTextOnly()) {throw new Exception("包含其他子元素,禁止添加文本!");
}
elem.addText(text);
}returnelem;
}//XML指定元素下删除值
public booleanRemoveText(Element elem) {boolean succ = false;if (elem != null &&elem.isTextOnly()) {
elem.setText("");
succ= true;
}returnsucc;
}
}