java操作xml_Java操作XML

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;

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值