/***** Code de MesExemples.com *******/
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 = "userinfo.xml";
new XMLTreeView(frame);
}
public XMLTreeView(JFrame frame)
{
frame.getContentPane().setLayout(new BorderLayout());
DefaultMutableTreeNode top = new DefaultMutableTreeNode(file);
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
Code testé avec le fichier XML Suivant
Sakoba
Adams
Rappel
Ne m'oubliez pas ce week-end!