2015-04-28 20 views
5

Desidero visualizzare il nome e i valori di un attributo accanto al nome del nodo in JTree. Qualcuno può dirmi come farlo? Ecco il codice che uso per visualizzare la JTree:Come visualizzare un nome e un valore di attributo specifici accanto a un nodo in JTree?

import javax.swing.*; 
import java.awt.*; 
import java.awt.event.*; 
import java.awt.Event.*; 
import java.io.*; 
import javax.swing.tree.*; 
import org.xml.sax.*; 
import org.xml.sax.helpers.*; 
import org.apache.xerces.parsers.*; 

public class XMLTreeView { 

    private SAXTreeBuilder saxTree = null; 
    private static String file = ""; 

    public static void main(String args[]) { 
     JFrame frame = new JFrame("XMLTreeView: [ games.xml ]"); 
     frame.setSize(400, 400); 

     frame.addWindowListener(new WindowAdapter() { 
      public void windowClosing(WindowEvent ev) { 
       System.exit(0); 
      } 
     }); 
     file = "example1.xml"; 
     new XMLTreeView(frame); 
    } 

    public XMLTreeView(JFrame frame) { 
     frame.getContentPane().setLayout(new BorderLayout()); 
     DefaultMutableTreeNode top = new DefaultMutableTreeNode(file); 
//    DefaultMutableTreeNode top = new DefaultMutableTreeNode("XML Document"); 
     saxTree = new SAXTreeBuilder(top); 
     try { 
      SAXParser saxParser = new SAXParser(); 
      saxParser.setContentHandler(saxTree); 
      saxParser.parse(new InputSource(new FileInputStream(file))); 
     } catch (Exception ex) { 
      top.add(new DefaultMutableTreeNode(ex.getMessage())); 
     } 
     JTree tree = new JTree(saxTree.getTree()); 
     JScrollPane scrollPane = new JScrollPane(tree); 

     frame.getContentPane().add("Center", scrollPane); 
     frame.setVisible(true); 
    } 
} 

class SAXTreeBuilder extends DefaultHandler { 

    private DefaultMutableTreeNode currentNode = null; 
    private DefaultMutableTreeNode previousNode = null; 
    private DefaultMutableTreeNode rootNode = null; 

    public SAXTreeBuilder(DefaultMutableTreeNode root) { 
     rootNode = root; 
    } 

    public void startDocument() { 
     currentNode = rootNode; 
    } 

    public void endDocument() { 
    } 

    public void characters(char[] data, int start, int end) { 
     String str = new String(data, start, end); 
     if (!str.equals("") && Character.isLetter(str.charAt(0))) { 
      currentNode.add(new DefaultMutableTreeNode(str)); 
     } 
    } 

    public void startElement(String uri, String qName, String lName, Attributes atts) { 
     previousNode = currentNode; 
     currentNode = new DefaultMutableTreeNode(lName); 
     // Add attributes as child nodes // 
     attachAttributeList(currentNode, atts); 
     previousNode.add(currentNode); 
    } 

    public void endElement(String uri, String qName, String lName) { 
     if (currentNode.getUserObject().equals(lName)) { 
      currentNode = (DefaultMutableTreeNode) currentNode.getParent(); 
     } 
    } 

    public DefaultMutableTreeNode getTree() { 
     return rootNode; 
    } 

    private void attachAttributeList(DefaultMutableTreeNode node, Attributes atts) { 
     for (int i = 0; i < atts.getLength(); i++) { 
      String name = atts.getLocalName(i); 
      String value = atts.getValue(name); 
      node.add(new DefaultMutableTreeNode(name + " = " + value)); 
     } 
    } 
} 

Nel JTree, voglio visualizzare l'attributo NEType accanto NE nodo e il nodo equipmentHolderType attributo accanto EQHO

NE NEType=WBTS 
    EQHO equipmentHolderType=Subrack 

voglio avere qualcosa del genere:

enter image description here

Ecco un esempio di file XML che ho a che fare con:

<?xml version="1.0" encoding="ISO-8859-1" standalone="yes" ?> 
<HWData xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="hw_data.xsd"> 
<Header xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance" AdaptationName="NWI3BulkUpload" AccessProtocol="NWI3" time="2004-01-01T00:04:02" uploaded="true" version="1.0" /> 
<NE xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance" vendorName="Nokia Siemens Networks" objectClass="NE" objectClassVersion="1" MOID="NE-RNC-1/DN:NE-WBTS-4183" NEId="PLMN-PLMN/RNC-1/WBTS-4183" NEType="WBTS" operationalState="enabled" locationName="Tun4183" nameFromPlanningSystem="" systemTitle="Nokia Flexi WCDMA Base Station"> 
<EQHO vendorName="Nokia Siemens Networks" objectClass="EQHO" objectClassVersion="1" MOID="NE-RNC-1/DN:NE-WBTS-4183/EQHO-40448" equipmentHolderId="40448" equipmentHolderType="Subrack" equipmentHolderSpecificType="472100A-40448" identificationCode="472100A" version="101" serialNumber="K9111641678" userLabel="FRGP" state="working"> 
<UNIT vendorName="Nokia Siemens Networks" objectClass="UNIT" objectClassVersion="1" MOID="NE-RNC-1/DN:NE-WBTS-4183/EQHO-40448/UNIT-158" unitId="158" unitTypeActual="CORE_FRGP" identificationCode="084629A" version="101" serialNumber="K9111641678" /> 
</EQHO> 
<EQHO vendorName="Nokia Siemens Networks" objectClass="EQHO" objectClassVersion="1" MOID="NE-RNC-1/DN:NE-WBTS-4183/EQHO-173" equipmentHolderId="173" equipmentHolderType="Subrack" equipmentHolderSpecificType="471469A-173" identificationCode="471469A" version="" serialNumber="L1104816112" userLabel="FSME" state="working"> 
<UNIT vendorName="N" objectClass="UNIT" objectClassVersion="1" MOID="NE-RNC-1/DN:NE-WBTS-4183/EQHO-173/UNIT-16" unitId="16" unitTypeActual="CORE_FSME" identificationCode="083833A" version="104" serialNumber="L1104816112" /> 
<UNIT vendorName="NOKIA SIEMENS NETWORKS" objectClass="UNIT" objectClassVersion="1" MOID="NE-RNC-1/DN:NE-WBTS-4183/EQHO-173/UNIT-225" unitId="225" unitTypeActual="FTLB" identificationCode="471984A" version="103" serialNumber="RY104807867" /> 
</EQHO> 
<EQHO vendorName="NSN" objectClass="EQHO" objectClassVersion="1" MOID="NE-RNC-1/DN:NE-WBTS-4183/EQHO-40192" equipmentHolderId="40192" equipmentHolderType="Subrack" equipmentHolderSpecificType="472083A-40192" identificationCode="472083A" version="101" serialNumber="L6105220714" userLabel="FXDA" state="working" /> 
</NE> 
</HWData> 
+0

Avete difficoltà la costruzione del [ 'TreeModel'] (https://docs.oracle.com/javase/ tutorial/uiswing/components/tree.html # data) o accedere a quel modello nel tuo ['TreeCellRenderer'] (https://docs.oracle.com/javase/tutorial/uiswing/components/tree.html#display)? Modifica la tua domanda per includere un [esempio completo] (http://stackoverflow.com/help/mcve) che presenta qualsiasi problema riscontrato. – trashgod

+0

no non ho alcun problema con il codice se cerchi di eseguire il codice nella tua macchina genererà il jtree senza quello che ho scritto su strong nella foto..quello che sto cercando è come modificare il codice per poterlo visualizzare il jtree piace nella foto !! – Hen

+0

Cosa succede con il codice che hai postato? Il modo consigliato è di comporre il testo in un 'TreeCellRenderer 'personalizzato. – trashgod

risposta

3

Si potrebbe modificare la stringa che viene utilizzato per costruire il nodo della struttura:

public void startElement(String uri, String qName, String lName, Attributes atts) { 
    previousNode = currentNode; 
    // Use the result of the getNodeText method to construct the tree node. 
    currentNode = new DefaultMutableTreeNode(getNodeText(lName, atts)); 
    // Add attributes as child nodes // 
    attachAttributeList(currentNode, atts); 
    previousNode.add(currentNode); 
} 

private String getNodeText(final String lName, final Attributes atts) { 
    final String postfix; 

    if ("NE".equals(lName) && atts.getValue("NEType") != null) 
     postfix = " NEType=" + atts.getValue("NEType"); 
    else if ("EQHO".equals(lName) && atts.getValue("equipmentHolderType") != null) 
     postfix = " equipmentHolderType=" + atts.getValue("equipmentHolderType"); 
    else 
     postfix = ""; 

    return lName + postfix; 
} 

Questo è il codice completo mi sono imbattuto:

import java.awt.BorderLayout; 
import java.awt.event.WindowAdapter; 
import java.awt.event.WindowEvent; 
import java.io.FileInputStream; 

import javax.swing.JFrame; 
import javax.swing.JScrollPane; 
import javax.swing.JTree; 
import javax.swing.tree.DefaultMutableTreeNode; 

import org.apache.xerces.parsers.SAXParser; 
import org.xml.sax.Attributes; 
import org.xml.sax.InputSource; 
import org.xml.sax.helpers.DefaultHandler; 

public class XMLTreeView { 
    private SAXTreeBuilder saxTree = null; 
    private static String file = ""; 

    public static void main(String args[]) { 
     file = "etc\\q29921994\\example2.xml"; 
     JFrame frame = new JFrame("XMLTreeView: [ " + file.substring(file.lastIndexOf("\\") + 1) + " ]"); 
     frame.setSize(400, 400); 

     frame.addWindowListener(new WindowAdapter() { 
      public void windowClosing(WindowEvent ev) { 
       System.exit(0); 
      } 
     }); 
     new XMLTreeView(frame); 
    } 

    public XMLTreeView(JFrame frame) { 
     frame.getContentPane().setLayout(new BorderLayout()); 
     DefaultMutableTreeNode top = new DefaultMutableTreeNode(file); 
     // DefaultMutableTreeNode top = new DefaultMutableTreeNode("XML Document"); 
     saxTree = new SAXTreeBuilder(top); 

     try { 
      SAXParser saxParser = new SAXParser(); 
      saxParser.setContentHandler(saxTree); 
      saxParser.parse(new InputSource(new FileInputStream(file))); 
     } catch (Exception ex) { 
      top.add(new DefaultMutableTreeNode(ex.getMessage())); 
     } 
     JTree tree = new JTree(saxTree.getTree()); 
     JScrollPane scrollPane = new JScrollPane(tree); 

     frame.getContentPane().add("Center", scrollPane); 
     frame.setVisible(true); 
    } 
} 


class SAXTreeBuilder extends DefaultHandler { 
    private DefaultMutableTreeNode currentNode = null; 
    private DefaultMutableTreeNode previousNode = null; 
    private DefaultMutableTreeNode rootNode = null; 

    public SAXTreeBuilder(DefaultMutableTreeNode root) { 
     rootNode = root; 
    } 

    public void startDocument() { 
     currentNode = rootNode; 
    } 

    public void endDocument() { 
    } 

    public void characters(char[] data, int start, int end) { 
     String str = new String(data, start, end); 
     if (!str.equals("") && Character.isLetter(str.charAt(0))) 
      currentNode.add(new DefaultMutableTreeNode(str)); 
    } 

    public void startElement(String uri, String qName, String lName, Attributes atts) { 
     previousNode = currentNode; 
     // currentNode = new DefaultMutableTreeNode(lName); 
     // Use the result of the getNodeText method to construct the tree node. 
     currentNode = new DefaultMutableTreeNode(getNodeText(lName, atts)); 
     // Add attributes as child nodes // 
     attachAttributeList(currentNode, atts); 
     previousNode.add(currentNode); 
    } 

    public void endElement(String uri, String qName, String lName) { 
     // I think the if below can be removed: 
     //if (currentNode.getUserObject().equals(lName)) 
      currentNode = (DefaultMutableTreeNode) currentNode.getParent(); 
    } 

    private String getNodeText(final String lName, final Attributes atts) { 
     final String postfix; 

     if ("NE".equals(lName) && atts.getValue("NEType") != null) 
      postfix = " NEType=" + atts.getValue("NEType"); 
     else if ("EQHO".equals(lName) && atts.getValue("equipmentHolderType") != null) 
      postfix = " equipmentHolderType=" + atts.getValue("equipmentHolderType"); 
     else if ("UNIT".equals(lName) && atts.getValue("unitTypeActual") != null) 
      postfix = " equipmentHolderType=" + atts.getValue("unitTypeActual"); 
     else if ("FUUT".equals(lName) && atts.getValue("functionalUnitType") != null) 
      postfix = " equipmentHolderType=" + atts.getValue("functionalUnitType"); 
     else 
      postfix = ""; 

     return lName + postfix; 
    } 

    public DefaultMutableTreeNode getTree() { 
     return rootNode; 
    } 

    private void attachAttributeList(DefaultMutableTreeNode node, Attributes atts) { 
     for (int i = 0; i < atts.getLength(); i++) { 
      String name = atts.getLocalName(i); 
      String value = atts.getValue(name); 
      node.add(new DefaultMutableTreeNode(name + " = " + value)); 
     } 
    } 
} 

Questo è il file example2.xml ho usato:

<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?> 
<HWData xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="hw_data.xsd"> 
    <Header xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance" AdaptationName="NWI3BulkUpload" AccessProtocol="NWI3" time="2013-05-29T13:09:29" uploaded="true" version="1.0"/> 
    <NE xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance" vendorName="Nokia Siemens Networks" objectClass="NE" objectClassVersion="1" MOID="NE-RNC-4/DN:NE-WBTS-4204" NEId="PLMN-PLMN/RNC-4/WBTS-4204" NEType="WBTS" operationalState="enabled" locationName="SFX4204" nameFromPlanningSystem="" systemTitle="Nokia Flexi WCDMA Base Station"> 
     <EQHO vendorName="Nokia Siemens Networks" objectClass="EQHO" objectClassVersion="1" MOID="NE-RNC-4/DN:NE-WBTS-4204/EQHO-173" equipmentHolderId="173" equipmentHolderType="Subrack" equipmentHolderSpecificType="471469A-173" identificationCode="471469A" version="" serialNumber="F7123009045" userLabel="FSME" state="working"> 
      <UNIT vendorName="N" objectClass="UNIT" objectClassVersion="1" MOID="NE-RNC-4/DN:NE-WBTS-4204/EQHO-173/UNIT-16" unitId="16" unitTypeActual="CORE_FSME" identificationCode="083833A" version="105" serialNumber="F7123009045"/> 
      <UNIT vendorName="NOKIA SIEMENS NETWORKS" objectClass="UNIT" objectClassVersion="1" MOID="NE-RNC-4/DN:NE-WBTS-4204/EQHO-173/UNIT-225" unitId="225" unitTypeActual="FTLB" identificationCode="471984A" version="104" serialNumber="K9123412124"/> 
     </EQHO> 
     <EQHO vendorName="NSN" objectClass="EQHO" objectClassVersion="1" MOID="NE-RNC-4/DN:NE-WBTS-4204/EQHO-40192" equipmentHolderId="40192" equipmentHolderType="Subrack" equipmentHolderSpecificType="472083A-40192" identificationCode="472083A" version="203" serialNumber="K9123021259" userLabel="FXDA" state="working"> 
      <UNIT vendorName="AR" objectClass="UNIT" objectClassVersion="1" MOID="NE-RNC-4/DN:NE-WBTS-4204/EQHO-40192/UNIT-56081" unitId="56081" unitTypeActual="TILT" identificationCode="CV3PX310R-BTQ" version="" serialNumber="00000008496310581"/> 
      <UNIT vendorName="AR" objectClass="UNIT" objectClassVersion="1" MOID="NE-RNC-4/DN:NE-WBTS-4204/EQHO-40192/UNIT-56083" unitId="56083" unitTypeActual="TILT" identificationCode="CV3PX310R-BTQ" version="" serialNumber="00000008496310721"/> 
      <UNIT vendorName="AR" objectClass="UNIT" objectClassVersion="1" MOID="NE-RNC-4/DN:NE-WBTS-4204/EQHO-40192/UNIT-56085" unitId="56085" unitTypeActual="TILT" identificationCode="CV3PX310R-BTQ" version="" serialNumber="00000008496310441"/> 
     </EQHO> 
     <EQHO vendorName="AR" objectClass="EQHO" objectClassVersion="1" MOID="NE-RNC-4/DN:NE-WBTS-4204/EQHO-56089" equipmentHolderId="56089" equipmentHolderType="Subrack" equipmentHolderSpecificType="CV3PX310R-BTQ-56089" identificationCode="CV3PX310R-BTQ" version="" serialNumber="00000008496310584" userLabel="" state="working"/> 
     <EQHO vendorName="AR" objectClass="EQHO" objectClassVersion="1" MOID="NE-RNC-4/DN:NE-WBTS-4204/EQHO-56090" equipmentHolderId="56090" equipmentHolderType="Subrack" equipmentHolderSpecificType="CV3PX310R-BTQ-56090" identificationCode="CV3PX310R-BTQ" version="" serialNumber="00000008496310582" userLabel="" state="working"/> 
     <EQHO vendorName="AR" objectClass="EQHO" objectClassVersion="1" MOID="NE-RNC-4/DN:NE-WBTS-4204/EQHO-56091" equipmentHolderId="56091" equipmentHolderType="Subrack" equipmentHolderSpecificType="CV3PX310R-BTQ-56091" identificationCode="CV3PX310R-BTQ" version="" serialNumber="00000008496310724" userLabel="" state="working"/> 
     <EQHO vendorName="AR" objectClass="EQHO" objectClassVersion="1" MOID="NE-RNC-4/DN:NE-WBTS-4204/EQHO-56092" equipmentHolderId="56092" equipmentHolderType="Subrack" equipmentHolderSpecificType="CV3PX310R-BTQ-56092" identificationCode="CV3PX310R-BTQ" version="" serialNumber="00000008496310722" userLabel="" state="working"/> 
     <EQHO vendorName="AR" objectClass="EQHO" objectClassVersion="1" MOID="NE-RNC-4/DN:NE-WBTS-4204/EQHO-56093" equipmentHolderId="56093" equipmentHolderType="Subrack" equipmentHolderSpecificType="CV3PX310R-BTQ-56093" identificationCode="CV3PX310R-BTQ" version="" serialNumber="00000008496310444" userLabel="" state="working"/> 
     <EQHO vendorName="AR" objectClass="EQHO" objectClassVersion="1" MOID="NE-RNC-4/DN:NE-WBTS-4204/EQHO-56094" equipmentHolderId="56094" equipmentHolderType="Subrack" equipmentHolderSpecificType="CV3PX310R-BTQ-56094" identificationCode="CV3PX310R-BTQ" version="" serialNumber="00000008496310442" userLabel="" state="working"/> 
     <EQHO vendorName="Nokia Siemens Networks" objectClass="EQHO" objectClassVersion="1" MOID="NE-RNC-4/DN:NE-WBTS-4204/EQHO-40448" equipmentHolderId="40448" equipmentHolderType="Subrack" equipmentHolderSpecificType="472100A-40448" identificationCode="472100A" version="101" serialNumber="K9122905970" userLabel="FRGP" state="working"> 
      <UNIT vendorName="Nokia Siemens Networks" objectClass="UNIT" objectClassVersion="1" MOID="NE-RNC-4/DN:NE-WBTS-4204/EQHO-40448/UNIT-158" unitId="158" unitTypeActual="CORE_FRGP" identificationCode="084629A" version="101" serialNumber="K9122905970"/> 
      <UNIT vendorName="AR" objectClass="UNIT" objectClassVersion="1" MOID="NE-RNC-4/DN:NE-WBTS-4204/EQHO-40448/UNIT-56593" unitId="56593" unitTypeActual="TILT" identificationCode="CV3PX310R-BTQ" version="" serialNumber="00000008496310583"/> 
      <UNIT vendorName="AR" objectClass="UNIT" objectClassVersion="1" MOID="NE-RNC-4/DN:NE-WBTS-4204/EQHO-40448/UNIT-56595" unitId="56595" unitTypeActual="TILT" identificationCode="CV3PX310R-BTQ" version="" serialNumber="00000008496310723"/> 
      <UNIT vendorName="AR" objectClass="UNIT" objectClassVersion="1" MOID="NE-RNC-4/DN:NE-WBTS-4204/EQHO-40448/UNIT-56597" unitId="56597" unitTypeActual="TILT" identificationCode="CV3PX310R-BTQ" version="" serialNumber="00000008496310443"/> 
     </EQHO> 
    </NE> 
</HWData> 

Questa è la schermata del programma in esecuzione:

Screenshot from modified program

+0

hey Freek il mio obiettivo non è quello di visualizzare l'attributo fortemente .. ho appena scritto in questo modo per chiarire .. quello che voglio sapere è come fare jtree visualizza un attributo specifico oltre al nome del nodo (l'attributo è uno degli attributi del nodo) – Hen

+0

Modificata la risposta dopo aver inizialmente frainteso la domanda. –

+0

grazie Freek questo è molto utile :) – Hen

3

Nella variante di seguito, ho usato javax.xml.parsers, una versione modificata getNodeText() e il vostro aggiornamento xml.

image

XMLTreeView.java:

import javax.swing.*; 
import java.awt.*; 
import java.io.IOException; 
import javax.swing.tree.*; 
import javax.xml.parsers.ParserConfigurationException; 
import javax.xml.parsers.SAXParser; 
import javax.xml.parsers.SAXParserFactory; 
import org.xml.sax.Attributes; 
import org.xml.sax.SAXException; 
import org.xml.sax.helpers.DefaultHandler; 

/** @see http://stackoverflow.com/q/29921994/230513 */ 
public class XMLTreeView { 

    private static final String file = "example.xml"; 

    public static void main(String args[]) { 
     EventQueue.invokeLater(() -> { 
      new XMLTreeView(); 
     }); 
    } 

    public XMLTreeView() { 
     JFrame frame = new JFrame("XMLTreeView: [ games.xml ]"); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     DefaultMutableTreeNode top = new DefaultMutableTreeNode(file); 
     SAXTreeBuilder saxTree = new SAXTreeBuilder(top); 
     try { 
      SAXParserFactory parserFactory = SAXParserFactory.newInstance(); 
      SAXParser saxParser = parserFactory.newSAXParser(); 
      saxParser.parse(file, saxTree); 
     } catch (ParserConfigurationException | SAXException | IOException ex) { 
      ex.printStackTrace(System.err); 
     } 
     JTree tree = new JTree(saxTree.getTree()); 
     tree.expandRow(1); 
     JScrollPane scrollPane = new JScrollPane(tree); 
     frame.add(scrollPane); 
     frame.pack(); 
     frame.setVisible(true); 
    } 
} 

class SAXTreeBuilder extends DefaultHandler { 

    private DefaultMutableTreeNode rootNode; 
    private DefaultMutableTreeNode currentNode; 
    private DefaultMutableTreeNode previousNode; 

    public SAXTreeBuilder(DefaultMutableTreeNode root) { 
     rootNode = root; 
    } 

    @Override 
    public void startDocument() { 
     currentNode = rootNode; 
    } 

    @Override 
    public void startElement(String uri, String qName, String lName, Attributes atts) { 
     previousNode = currentNode; 
     currentNode = new DefaultMutableTreeNode(getNodeText(lName, atts)); 
     attachAttributeList(currentNode, atts); 
     previousNode.add(currentNode); 
    } 

    private String getNodeText(final String lName, final Attributes atts) { 
     if ("NE".equals(lName)) { 
      return lName + " NEType=" + atts.getValue("NEType"); 
     } else if ("EQHO".equals(lName)) { 
      return lName + " equipmentHolderType=" + atts.getValue("equipmentHolderType"); 
     } else if ("UNIT".equals(lName)) { 
      return lName + " equipmentHolderType=" + atts.getValue("unitTypeActual"); 
     } else if ("FUUT".equals(lName)) { 
      return lName + " equipmentHolderType=" + atts.getValue("functionalUnitType"); 
     } else { 
      return lName; 
     } 
    } 

    @Override 
    public void endElement(String uri, String qName, String lName) { 
     if (currentNode.getUserObject().equals(lName)) { 
      currentNode = (DefaultMutableTreeNode) currentNode.getParent(); 
     } 
    } 

    public DefaultMutableTreeNode getTree() { 
     return rootNode; 
    } 

    private void attachAttributeList(DefaultMutableTreeNode node, Attributes atts) { 
     for (int i = 0; i < atts.getLength(); i++) { 
      String name = atts.getLocalName(i); 
      String value = atts.getValue(name); 
      node.add(new DefaultMutableTreeNode(name + " = " + value)); 
     } 
    } 
} 

example.xml:

<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?> 
<HWData xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="hw_data.xsd"> 
<Header xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance" AdaptationName="NWI3BulkUpload" AccessProtocol="NWI3" time="2013-05-29T13:09:29" uploaded="true" version="1.0"/> 
<NE xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance" vendorName="Nokia Siemens Networks" objectClass="NE" objectClassVersion="1" MOID="NE-RNC-4/DN:NE-WBTS-4204" NEId="PLMN-PLMN/RNC-4/WBTS-4204" NEType="WBTS" operationalState="enabled" locationName="SFX4204" nameFromPlanningSystem="" systemTitle="Nokia Flexi WCDMA Base Station"> 
<EQHO vendorName="Nokia Siemens Networks" objectClass="EQHO" objectClassVersion="1" MOID="NE-RNC-4/DN:NE-WBTS-4204/EQHO-173" equipmentHolderId="173" equipmentHolderType="Subrack" equipmentHolderSpecificType="471469A-173" identificationCode="471469A" version="" serialNumber="F7123009045" userLabel="FSME" state="working"> 
<UNIT vendorName="N" objectClass="UNIT" objectClassVersion="1" MOID="NE-RNC-4/DN:NE-WBTS-4204/EQHO-173/UNIT-16" unitId="16" unitTypeActual="CORE_FSME" identificationCode="083833A" version="105" serialNumber="F7123009045"/> 
<UNIT vendorName="NOKIA SIEMENS NETWORKS" objectClass="UNIT" objectClassVersion="1" MOID="NE-RNC-4/DN:NE-WBTS-4204/EQHO-173/UNIT-225" unitId="225" unitTypeActual="FTLB" identificationCode="471984A" version="104" serialNumber="K9123412124"/> 
</EQHO> 
<EQHO vendorName="NSN" objectClass="EQHO" objectClassVersion="1" MOID="NE-RNC-4/DN:NE-WBTS-4204/EQHO-40192" equipmentHolderId="40192" equipmentHolderType="Subrack" equipmentHolderSpecificType="472083A-40192" identificationCode="472083A" version="203" serialNumber="K9123021259" userLabel="FXDA" state="working"> 
<UNIT vendorName="AR" objectClass="UNIT" objectClassVersion="1" MOID="NE-RNC-4/DN:NE-WBTS-4204/EQHO-40192/UNIT-56081" unitId="56081" unitTypeActual="TILT" identificationCode="CV3PX310R-BTQ" version="" serialNumber="00000008496310581"/> 
<UNIT vendorName="AR" objectClass="UNIT" objectClassVersion="1" MOID="NE-RNC-4/DN:NE-WBTS-4204/EQHO-40192/UNIT-56083" unitId="56083" unitTypeActual="TILT" identificationCode="CV3PX310R-BTQ" version="" serialNumber="00000008496310721"/> 
<UNIT vendorName="AR" objectClass="UNIT" objectClassVersion="1" MOID="NE-RNC-4/DN:NE-WBTS-4204/EQHO-40192/UNIT-56085" unitId="56085" unitTypeActual="TILT" identificationCode="CV3PX310R-BTQ" version="" serialNumber="00000008496310441"/> 
</EQHO> 
<EQHO vendorName="AR" objectClass="EQHO" objectClassVersion="1" MOID="NE-RNC-4/DN:NE-WBTS-4204/EQHO-56089" equipmentHolderId="56089" equipmentHolderType="Subrack" equipmentHolderSpecificType="CV3PX310R-BTQ-56089" identificationCode="CV3PX310R-BTQ" version="" serialNumber="00000008496310584" userLabel="" state="working"/> 
<EQHO vendorName="AR" objectClass="EQHO" objectClassVersion="1" MOID="NE-RNC-4/DN:NE-WBTS-4204/EQHO-56090" equipmentHolderId="56090" equipmentHolderType="Subrack" equipmentHolderSpecificType="CV3PX310R-BTQ-56090" identificationCode="CV3PX310R-BTQ" version="" serialNumber="00000008496310582" userLabel="" state="working"/> 
<EQHO vendorName="AR" objectClass="EQHO" objectClassVersion="1" MOID="NE-RNC-4/DN:NE-WBTS-4204/EQHO-56091" equipmentHolderId="56091" equipmentHolderType="Subrack" equipmentHolderSpecificType="CV3PX310R-BTQ-56091" identificationCode="CV3PX310R-BTQ" version="" serialNumber="00000008496310724" userLabel="" state="working"/> 
<EQHO vendorName="AR" objectClass="EQHO" objectClassVersion="1" MOID="NE-RNC-4/DN:NE-WBTS-4204/EQHO-56092" equipmentHolderId="56092" equipmentHolderType="Subrack" equipmentHolderSpecificType="CV3PX310R-BTQ-56092" identificationCode="CV3PX310R-BTQ" version="" serialNumber="00000008496310722" userLabel="" state="working"/> 
<EQHO vendorName="AR" objectClass="EQHO" objectClassVersion="1" MOID="NE-RNC-4/DN:NE-WBTS-4204/EQHO-56093" equipmentHolderId="56093" equipmentHolderType="Subrack" equipmentHolderSpecificType="CV3PX310R-BTQ-56093" identificationCode="CV3PX310R-BTQ" version="" serialNumber="00000008496310444" userLabel="" state="working"/> 
<EQHO vendorName="AR" objectClass="EQHO" objectClassVersion="1" MOID="NE-RNC-4/DN:NE-WBTS-4204/EQHO-56094" equipmentHolderId="56094" equipmentHolderType="Subrack" equipmentHolderSpecificType="CV3PX310R-BTQ-56094" identificationCode="CV3PX310R-BTQ" version="" serialNumber="00000008496310442" userLabel="" state="working"/> 
<EQHO vendorName="Nokia Siemens Networks" objectClass="EQHO" objectClassVersion="1" MOID="NE-RNC-4/DN:NE-WBTS-4204/EQHO-40448" equipmentHolderId="40448" equipmentHolderType="Subrack" equipmentHolderSpecificType="472100A-40448" identificationCode="472100A" version="101" serialNumber="K9122905970" userLabel="FRGP" state="working"> 
<UNIT vendorName="Nokia Siemens Networks" objectClass="UNIT" objectClassVersion="1" MOID="NE-RNC-4/DN:NE-WBTS-4204/EQHO-40448/UNIT-158" unitId="158" unitTypeActual="CORE_FRGP" identificationCode="084629A" version="101" serialNumber="K9122905970"/> 
<UNIT vendorName="AR" objectClass="UNIT" objectClassVersion="1" MOID="NE-RNC-4/DN:NE-WBTS-4204/EQHO-40448/UNIT-56593" unitId="56593" unitTypeActual="TILT" identificationCode="CV3PX310R-BTQ" version="" serialNumber="00000008496310583"/> 
<UNIT vendorName="AR" objectClass="UNIT" objectClassVersion="1" MOID="NE-RNC-4/DN:NE-WBTS-4204/EQHO-40448/UNIT-56595" unitId="56595" unitTypeActual="TILT" identificationCode="CV3PX310R-BTQ" version="" serialNumber="00000008496310723"/> 
<UNIT vendorName="AR" objectClass="UNIT" objectClassVersion="1" MOID="NE-RNC-4/DN:NE-WBTS-4204/EQHO-40448/UNIT-56597" unitId="56597" unitTypeActual="TILT" identificationCode="CV3PX310R-BTQ" version="" serialNumber="00000008496310443"/> 
</EQHO> 
</NE> 
</HWData>