View Javadoc

1   package es.inteco.eni.xml;
2   
3   import java.util.Iterator;
4   import java.util.LinkedHashMap;
5   import java.util.Map;
6   
7   /**
8    * Clase que representa el XML en forma de arbol
9    * 
10   * 
11   *
12   */
13  public class XmlTree {
14  
15  	/**
16  	 * Mapa con clave un identificador del nodo ( QName + "-" +Profundidad el nodo + "-" + Número de hijos) 
17  	 * y como valor un objeto @link {@link XmlNode} que representa un nodo del XML
18  	 */
19  	private Map<String, XmlNode> xmlNodes = new LinkedHashMap<String, XmlNode>();
20  	/**
21  	 * Profundidad
22  	 */
23  	private int deep = 0;
24  	
25  	/**
26  	 * @return Devuelve el valor del campo xmlNodes
27  	 */
28  	public Map<String, XmlNode> getXmlNodes() {
29  		return xmlNodes;
30  	}
31  
32  	/**
33  	 * @param Asigna al campo xmlNodes el valor del parámetro xmlNodes
34  	 */
35  	public void setXmlNodes(Map<String, XmlNode> xmlNodes) {
36  		this.xmlNodes = xmlNodes;
37  	}
38  
39  	/**
40  	 * @return Devuelve el valor del campo deep
41  	 */
42  	public int getDeep() {
43  		return deep;
44  	}
45  
46  	/**
47  	 * @param Asigna al campo deep el valor del parámetro deep
48  	 */
49  	public void setDeep(int deep) {
50  		this.deep = deep;
51  	}
52  
53  	/**
54  	 * Devuelve el número de hojas del arbol
55  	 * @return Número de hojas
56  	 */
57  	public int getLeafsNum() {
58  		return getNodesLeafsNum(getXmlNodes());
59  	}
60  	
61  	private int getNodesLeafsNum(Map<String, XmlNode> xmlNodes){
62  		int result = 0;
63  		Iterator<java.util.Map.Entry<String, XmlNode>> it = xmlNodes.entrySet().iterator();
64  		while(it.hasNext()){
65  			java.util.Map.Entry<String, XmlNode> entry = it.next();
66  			XmlNode xmlNode = entry.getValue();
67  			result+=xmlNode.getTotalLeafDescendants();
68  		}
69  		return result;
70  	}
71  
72  }