Ciao a tutti sto realizzando un'applicazione che dato un file xml in ingresso, me lo visualizza sottoforma di albero jtree. Posto anche un'immagine di quello che sono riuscito a realizzare.
Il problema č il seguente: come faccio a inserire nello jtree anche quegli attributi inseriti tra i tag?
Mi spiego meglio:

dallo screen (collegamento in basso) si vede il tag
<item id="21-Lug">
....
...
</item>
ed io non riesco ad inserire anche l'attributo id con relativo valore nello jtree associato.
Qualcuno sā come si fā?

Ecco il codice: il metodo e la classe che implementa TreeModel con l'override dei metodi che mi interessavano.
Grazie in anticipo

codice:
public void createXMLTree (File xml) {
  		
  		try {
  			  DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
  			  DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
  			  Document doc = dBuilder.parse(xml);
  			  doc.getDocumentElement().normalize();
  		 
  			  
  			  Node root = doc.getDocumentElement();
  			  XmlTreeModel model = new XmlTreeModel(root);
  			  tree.setModel(model);
  			  tree.setVisible(true);
  		  } catch (Exception e) {
  		    e.printStackTrace();
  		  }
  		  
  	}

codice:
class XmlTreeModel implements TreeModel {

	protected Node root;

	public XmlTreeModel(Node root){

		this.root = root;

	}
	
	//  Adds a listener for the TreeModelEvent posted after the tree changes.
	@Override
	public void addTreeModelListener(TreeModelListener arg0) {
		// TODO Auto-generated method stub
		
	}
	// Returns the child of parent at index index in the parent's child array.
	@Override
	public Object getChild(Object parent, int index) {
		Node child = ((Node)parent).getChildNodes().item(index);
		return (Object)child;
	}
	// Returns the number of children of parent.
	@Override
	public int getChildCount(Object parent) {
		return ((Node)parent).getChildNodes().getLength();
	}
	// Returns the index of child in parent.
	@Override
	public int getIndexOfChild(Object parent, Object child) {
		
		NodeList childs = ((Node)parent).getChildNodes();
		
		if (childs.getLength() == 0) { 
			return -1;
		}
		
		else {
			for (int i=0; i<childs.getLength(); i++){
				if (childs.item(i) == (Node)child) return i;
		    }
			return -1;
		}
		
	}
	// Returns the root of the tree.
	@Override
	public Object getRoot() {
		return (Object)this.root;
	}
	@Override
	// Returns true if node is a leaf.
	public boolean isLeaf(Object node) {
		// org.w3c.dom.Node.ELEMENT_NODE corrisponde al valore 7
		// org.w3c.dom.Node.ATTRIBUTE_NODE corrisponde al valore 1
		if ((((Node)node).getNodeType()==org.w3c.dom.Node.ELEMENT_NODE ) || (((Node)node).getNodeType()==org.w3c.dom.Node.ATTRIBUTE_NODE )) {
			return false;
		}
		
		else {
			return true;
		}
				
	}
	// Removes a listener previously added with addTreeModelListener.
	@Override
	public void removeTreeModelListener(TreeModelListener arg0) {
		// TODO Auto-generated method stub
		
	}
	// 
	@Override
	public void valueForPathChanged(TreePath arg0, Object arg1) {
		// TODO Auto-generated method stub
		
	}

}
http://www.zshare.net/image/66098282c1663303/