- /******* Classe de lancement et d'affichage ***************/
-
- import java.awt.Dimension;
- import java.awt.Toolkit;
-
- import javax.swing.JFrame;
- import javax.swing.JScrollPane;
-
-
- public class AffTree extends JFrame
- {
- public AffTree()
- {
- super("Dom Tree");
- setSize(500,500);
- Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
- setLocation((screenSize.width-getWidth())/2,(screenSize.height-getHeight())/2);
-
-
- JScrollPane treeView = new JScrollPane(DomTreeMaker.makeTree("abonnes.xml"));
- getContentPane().add(treeView);
- }
-
- public static void main(String[] args)
- {
- AffTree a = new AffTree();
- a.setVisible(true);
- }
- }
-
-
- /************** Classe pour générer l'arbre ****************/
-
- import javax.swing.JTree;
- import javax.swing.tree.*;
- import java.io.IOException;
- import java.util.HashMap;
- import java.util.Vector;
-
- import org.apache.xerces.parsers.DOMParser;
- import org.w3c.dom.*;
- import org.xml.sax.SAXException;
- /**
- * @author Duss
- *
- * Classe qui renvoit un objet JTree représentant la structure d'un fichier
- * Xml en le parsant avec DOM
- */
- public class DomTreeMaker
- {
- public static JTree makeTree(String fileName)
- {
-
- DOMParser parser = new DOMParser();
- try
- {
- parser.parse(fileName);
- }
- catch (SAXException e)
- {
- }
- catch (IOException e)
- {
- }
-
- Document document = parser.getDocument();
- Element database = document.getDocumentElement();
-
- DefaultMutableTreeNode top = new DefaultMutableTreeNode(database.getLocalName());
-
- DefaultMutableTreeNode pNiv = new DefaultMutableTreeNode(database.getFirstChild().getNextSibling().getLocalName());
-
- top.add(pNiv);
-
- // On récupère la liste des fils de premier niveau
- NodeList premNiv = database.getElementsByTagName(database.getFirstChild().getNextSibling().getLocalName());
-
- // Vector pour stocker le nom des fils
- Vector fils = new Vector(1);
-
- // On se positionne sur la première feuille
- Node pos = ((Element)premNiv.item(0)).getFirstChild().getNextSibling();
-
- // On ajoute le nom au Vector
- fils.addElement(pos.getLocalName());
-
- // Tant qu'on rencontre des noeuds, on descend de 2
- // a chaque fois pour eviter les balises fermantes
- // et on ajoute au Vector
- while ((pos = pos.getNextSibling().getNextSibling()) != null)
- fils.addElement(pos.getLocalName());
-
- DefaultMutableTreeNode tIdent,tFils, tVal, tAttr;
-
-
- // Pour chaque fils de premier niveau
- for( int i=0; i<premNiv.getLength(); i++ )
- {
- // On récupère les attributs
- Vector recAttr = DomTools.trouveAttribut((Element)premNiv.item(i),null);
- HashMap map;
-
- String nodeName = "";
- for (int l = 0 ; l< recAttr.size() ; l++)
- {
- map = (HashMap) recAttr.get(l);
-
- nodeName += map.get("nom") + " = " + map.get("valeur");
-
- if (l+1 < recAttr.size())
- nodeName += " | ";
- }
-
- // On ajoute l'attribut du fils (l'identifiant)
- tIdent = new DefaultMutableTreeNode(nodeName);
- pNiv.add(tIdent);
-
-
- // Puis pour chaque fils
- for (int j=0 ; j<fils.size() ; j++)
- {
- // On recupère la valeur et le type
- String val = DomTools.findText( (Element)premNiv.item(i),(String)fils.get(j) );
-
- Vector attribs = DomTools.trouveAttribut((Element)premNiv.item(i),(String)fils.get(j));
-
- tFils = new DefaultMutableTreeNode(fils.get(j));
- tIdent.add(tFils);
-
- DefaultMutableTreeNode attr = new DefaultMutableTreeNode("Attributs");
- tFils.add(attr);
-
- // Ajout des attributs
-
- for (int k = 0 ; k < attribs.size() ; k++)
- {
- map = (HashMap)attribs.get(k);
- tAttr = new DefaultMutableTreeNode(map.get("nom") + " = " + map.get("valeur"));
- attr.add(tAttr);
- }
-
- // Ajout de la valeur du fils
- tVal = new DefaultMutableTreeNode(val);
- tFils.add(tVal);
- }
-
-
- }
-
-
- final JTree tree = new JTree(top);
-
- tree.getSelectionModel().setSelectionMode
- (TreeSelectionModel.SINGLE_TREE_SELECTION);
-
-
- return tree;
-
- }
- }
-
-
- /************** Classe utilitaires Dom ********************/
-
- import java.util.HashMap;
- import java.util.Vector;
-
- import org.w3c.dom.Element;
- import org.w3c.dom.NamedNodeMap;
- import org.w3c.dom.Node;
- import org.w3c.dom.NodeList;
-
- /**
- * @author Duss
- *
- * Outils pour le parser Dom
- */
- public class DomTools
- {
-
- public static String findText( Element element, String name )
- {
- Element elementNom = findFirstElement( element, name );
- return findText(elementNom );
- }
-
- public static String findText(Element element)
- {
- return element.getFirstChild().getNodeValue();
-
- }
-
- public static Element findFirstElement( Element element, String name )
- {
- NodeList nl = element.getElementsByTagName( name );
- if ( nl.getLength() < 1 )
- throw new NullPointerException(
- "Element: "+element+" ne contient pas: "+name);
- return (Element)nl.item(0);
- }
-
- public static Vector trouveAttribut( Element element, String nom )
- {
- Vector attr = new Vector(1);
- HashMap map = new HashMap();
- Element elementNom = element;
- if (nom != null)
- elementNom = findFirstElement( element, nom );
- NamedNodeMap attributs = elementNom.getAttributes();
-
- for(int i=0; i<attributs.getLength(); i++)
- {
- Node numéro = attributs.item(i);
- map.put("nom",numéro.getNodeName());
- map.put("valeur",numéro.getNodeValue());
- attr.addElement(map);
- }
-
-
- return attr;
- }
-
- public static HashMap trouveAttribut(Node node)
- {
- HashMap map = new HashMap();
-
- NamedNodeMap attributs = node.getAttributes();
-
- for(int i=0; i<attributs.getLength(); i++)
- {
- Node numéro = attributs.item(i);
- map.put("nom",numéro.getNodeName());
- map.put("valeur",numéro.getNodeValue());
- }
- return map;
- }
-
-
-
- }
/******* Classe de lancement et d'affichage ***************/
import java.awt.Dimension;
import java.awt.Toolkit;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
public class AffTree extends JFrame
{
public AffTree()
{
super("Dom Tree");
setSize(500,500);
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
setLocation((screenSize.width-getWidth())/2,(screenSize.height-getHeight())/2);
JScrollPane treeView = new JScrollPane(DomTreeMaker.makeTree("abonnes.xml"));
getContentPane().add(treeView);
}
public static void main(String[] args)
{
AffTree a = new AffTree();
a.setVisible(true);
}
}
/************** Classe pour générer l'arbre ****************/
import javax.swing.JTree;
import javax.swing.tree.*;
import java.io.IOException;
import java.util.HashMap;
import java.util.Vector;
import org.apache.xerces.parsers.DOMParser;
import org.w3c.dom.*;
import org.xml.sax.SAXException;
/**
* @author Duss
*
* Classe qui renvoit un objet JTree représentant la structure d'un fichier
* Xml en le parsant avec DOM
*/
public class DomTreeMaker
{
public static JTree makeTree(String fileName)
{
DOMParser parser = new DOMParser();
try
{
parser.parse(fileName);
}
catch (SAXException e)
{
}
catch (IOException e)
{
}
Document document = parser.getDocument();
Element database = document.getDocumentElement();
DefaultMutableTreeNode top = new DefaultMutableTreeNode(database.getLocalName());
DefaultMutableTreeNode pNiv = new DefaultMutableTreeNode(database.getFirstChild().getNextSibling().getLocalName());
top.add(pNiv);
// On récupère la liste des fils de premier niveau
NodeList premNiv = database.getElementsByTagName(database.getFirstChild().getNextSibling().getLocalName());
// Vector pour stocker le nom des fils
Vector fils = new Vector(1);
// On se positionne sur la première feuille
Node pos = ((Element)premNiv.item(0)).getFirstChild().getNextSibling();
// On ajoute le nom au Vector
fils.addElement(pos.getLocalName());
// Tant qu'on rencontre des noeuds, on descend de 2
// a chaque fois pour eviter les balises fermantes
// et on ajoute au Vector
while ((pos = pos.getNextSibling().getNextSibling()) != null)
fils.addElement(pos.getLocalName());
DefaultMutableTreeNode tIdent,tFils, tVal, tAttr;
// Pour chaque fils de premier niveau
for( int i=0; i<premNiv.getLength(); i++ )
{
// On récupère les attributs
Vector recAttr = DomTools.trouveAttribut((Element)premNiv.item(i),null);
HashMap map;
String nodeName = "";
for (int l = 0 ; l< recAttr.size() ; l++)
{
map = (HashMap) recAttr.get(l);
nodeName += map.get("nom") + " = " + map.get("valeur");
if (l+1 < recAttr.size())
nodeName += " | ";
}
// On ajoute l'attribut du fils (l'identifiant)
tIdent = new DefaultMutableTreeNode(nodeName);
pNiv.add(tIdent);
// Puis pour chaque fils
for (int j=0 ; j<fils.size() ; j++)
{
// On recupère la valeur et le type
String val = DomTools.findText( (Element)premNiv.item(i),(String)fils.get(j) );
Vector attribs = DomTools.trouveAttribut((Element)premNiv.item(i),(String)fils.get(j));
tFils = new DefaultMutableTreeNode(fils.get(j));
tIdent.add(tFils);
DefaultMutableTreeNode attr = new DefaultMutableTreeNode("Attributs");
tFils.add(attr);
// Ajout des attributs
for (int k = 0 ; k < attribs.size() ; k++)
{
map = (HashMap)attribs.get(k);
tAttr = new DefaultMutableTreeNode(map.get("nom") + " = " + map.get("valeur"));
attr.add(tAttr);
}
// Ajout de la valeur du fils
tVal = new DefaultMutableTreeNode(val);
tFils.add(tVal);
}
}
final JTree tree = new JTree(top);
tree.getSelectionModel().setSelectionMode
(TreeSelectionModel.SINGLE_TREE_SELECTION);
return tree;
}
}
/************** Classe utilitaires Dom ********************/
import java.util.HashMap;
import java.util.Vector;
import org.w3c.dom.Element;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
/**
* @author Duss
*
* Outils pour le parser Dom
*/
public class DomTools
{
public static String findText( Element element, String name )
{
Element elementNom = findFirstElement( element, name );
return findText(elementNom );
}
public static String findText(Element element)
{
return element.getFirstChild().getNodeValue();
}
public static Element findFirstElement( Element element, String name )
{
NodeList nl = element.getElementsByTagName( name );
if ( nl.getLength() < 1 )
throw new NullPointerException(
"Element: "+element+" ne contient pas: "+name);
return (Element)nl.item(0);
}
public static Vector trouveAttribut( Element element, String nom )
{
Vector attr = new Vector(1);
HashMap map = new HashMap();
Element elementNom = element;
if (nom != null)
elementNom = findFirstElement( element, nom );
NamedNodeMap attributs = elementNom.getAttributes();
for(int i=0; i<attributs.getLength(); i++)
{
Node numéro = attributs.item(i);
map.put("nom",numéro.getNodeName());
map.put("valeur",numéro.getNodeValue());
attr.addElement(map);
}
return attr;
}
public static HashMap trouveAttribut(Node node)
{
HashMap map = new HashMap();
NamedNodeMap attributs = node.getAttributes();
for(int i=0; i<attributs.getLength(); i++)
{
Node numéro = attributs.item(i);
map.put("nom",numéro.getNodeName());
map.put("valeur",numéro.getNodeValue());
}
return map;
}
}