/***** 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<atts.getLength();i++) { String name = atts.getLocalName(i); String value = atts.getValue(name); node.add(new DefaultMutableTreeNode(name + " = " + value)); } } |
Code testé avec le fichier XML Suivant
<?xml version="1.0" encoding="windows-1252"?> <!-- Edited by MesEXemple.com --> <note> <to>Sakoba</to> <from>Adams</from> <heading>Rappel</heading> <body>Ne m'oubliez pas ce week-end!</body> </note> |
Cet article Java XML: Afficher un document XML dans une interface graphique Swing est apparu en premier sur .