package org.sky.auto.xml; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import org.apache.log4j.Logger; import org.dom4j.Attribute; import org.dom4j.Element; public class XMLElement implements XMLNode{ private static Logger logger = Logger.getLogger(XMLElement.class); private Element e; /**这个属性存储的是在这个XMLElement元素下面所有的child元素的list*/ private List<XMLChildElement> elist = new ArrayList<XMLChildElement>(); private boolean isFrameElement=false; private boolean isListElement=false; public XMLElement(){ } public Element getElement() { return e; } public void setElement(Element e) { this.e = e; } @SuppressWarnings("unchecked") public Map<String,String> getAttributes(){ Map<String,String> amap = new HashMap<String,String>(); List<Attribute> alist = getElement().attributes(); for(int i=0;i<alist.size();i++){ amap.put(alist.get(i).getName(), alist.get(i).getValue()); } return amap; } public String getId(){ return getAttributes().get("id"); } public String getValue(){ return getAttributes().get("value"); } public String getIndex(){ return getAttributes().get("index"); } public String getBy(){ return getAttributes().get("by"); } @SuppressWarnings("unchecked") public List<Attribute> getAttributeList(){ return getElement().attributes(); } protected List<XMLChildElement> getXMLChildElements(){ collectChildElments(getElement()); return elist; } private void collectChildElments(Element en){ List<?> xlist = en.elements("childElement"); if (xlist.size() != 0) { for (Iterator<?> it = xlist.iterator(); it.hasNext();) { Element elem = (Element) it.next(); XMLChildElement xce = new XMLChildElement(elem); logger.info("["+this.getId()+"]有子元素,定位方式为:"+"By->"+xce.getBy()+","+"Value->"+xce.getValue()+","+"Index->"+xce.getIndex()); elist.add(xce); //递归遍历 collectChildElments(elem); } } } public boolean isFrameElement() { return isFrameElement; } public void setFrameElement(boolean isFrameElement) { this.isFrameElement = isFrameElement; } public boolean isListElement() { return isListElement; } public void setListElement(boolean isListElement) { this.isListElement = isListElement; } }