Easy to Learn Java: Programming Articles, Examples and Tips

Start with Java in a few days with Java Lessons or Lectures

Home

Code Examples

Java Tools

More Java Tools!

Java Forum

All Java Tips

Books

Submit News
Search the site here...
Search...
 

StAX Event Tree Viewer, XML Java code example - Click here to copy ->>>

   Can't find what you're looking for? Try our search:

Really working examples categorized by API, package, class. You can compile and run our examples right away! Not from source code for Java projects - only working examples! Copy, compile and run!

package javaxml3;

import java.awt.BorderLayout;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.util.Iterator;

import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTree;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeModel;
import javax.xml.namespace.QName;
import javax.xml.stream.XMLEventReader;
import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLStreamConstants;
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.events.Attribute;
import javax.xml.stream.events.Characters;
import javax.xml.stream.events.DTD;
import javax.xml.stream.events.StartDo*****ent;
import javax.xml.stream.events.StartElement;
import javax.xml.stream.events.XMLEvent;

public class StAXEventTreeViewer extends JFrame {
  /** The base tree to render */
  private JTree jTree;

  /** Tree model to use */
  DefaultTreeModel defaultTreeModel;

  public StAXEventTreeViewer() {
    // Handle Swing setup
    super("StAX Tree Viewer");
    setSize(600450);
  }

  public void init(File filethrows XMLStreamException,
      FileNotFoundException {
    DefaultMutableTreeNode base = new DefaultMutableTreeNode(
        "XML Do*****ent: " + file.getAbsolutePath());

    // Build the tree model
    defaultTreeModel = new DefaultTreeModel(base);
    jTree = new JTree(defaultTreeModel);

    // Construct the tree hierarchy
    buildTree(defaultTreeModel, base, file);

    // Display the results
    getContentPane().add(new JScrollPane(jTree), BorderLayout.CENTER);
  }

  // Swing-related variables and methods, including
  // setting up a JTree and basic content pane

  public static void main(String[] args) {
    try {
      if (args.length != 1) {
        System.out.println("Usage: java javaxml3.StAXEventTreeViewer "
            "[XML Do*****ent]");
        return;
      }
      StAXEventTreeViewer viewer = new StAXEventTreeViewer();
      File f = new File(args[0]);

      viewer.init(f);
      viewer.setVisible(true);
    catch (Exception e) {
      e.printStackTrace();
    }
  }

  public void buildTree(DefaultTreeModel treeModel,
      DefaultMutableTreeNode current, File file)
      throws XMLStreamException, FileNotFoundException {

    XMLInputFactory inputFactory = XMLInputFactory.newInstance();
    XMLEventReader reader = inputFactory
        .createXMLEventReader(new FileInputStream(file));
    while (reader.hasNext()) {
      XMLEvent event = reader.nextEvent();
      switch (event.getEventType()) {
      case XMLStreamConstants.START_DO*****ENT:
        StartDo*****ent startDo*****ent = (StartDo*****entevent;
        DefaultMutableTreeNode version = new DefaultMutableTreeNode(
            "XML Version: " + startDo*****ent.getVersion());
        current.add(version);

        DefaultMutableTreeNode standalone = new DefaultMutableTreeNode(
            "Standalone? " + startDo*****ent.isStandalone());
        current.add(standalone);

        DefaultMutableTreeNode standaloneSet = new DefaultMutableTreeNode(
            "Was Standalone Set? " + startDo*****ent.standaloneSet());
        current.add(standaloneSet);

        DefaultMutableTreeNode encoding = new DefaultMutableTreeNode(
            "Was Encoding Set? " + startDo*****ent.encodingSet());
        current.add(encoding);

        DefaultMutableTreeNode declaredEncoding = new DefaultMutableTreeNode(
            "Declared Encoding: "
                + startDo*****ent.getCharacterEncodingScheme());
        current.add(declaredEncoding);
        break;
      case XMLStreamConstants.START_ELEMENT:
        StartElement startElement = (StartElementevent;
        QName elementName = startElement.getName();

        DefaultMutableTreeNode element = new DefaultMutableTreeNode(
            "Element: " + elementName.getLocalPart());
        current.add(element);
        current = element;

        if (!elementName.getNamespaceURI().equals("")) {
          String prefix = elementName.getPrefix();
          if (prefix.equals("")) {
            prefix = "[None]";
          }
          DefaultMutableTreeNode namespace = new DefaultMutableTreeNode(
              "Namespace: prefix = '" + prefix + "', URI = '"
                  + elementName.getNamespaceURI() "'");
          current.add(namespace);
        }

        for (Iterator it = startElement.getAttributes(); it.hasNext();) {
          Attribute attr = (Attributeit.next();
          DefaultMutableTreeNode attribute = new DefaultMutableTreeNode(
              "Attribute (name = '"
                  + attr.getName().getLocalPart()
                  "', value = '" + attr.getValue() "')");
          String attURI = attr.getName().getNamespaceURI();
          if (!attURI.equals("")) {
            String attPrefix = attr.getName().getPrefix();
            if (attPrefix.equals("")) {
              attPrefix = "[None]";
            }
            DefaultMutableTreeNode attNamespace = new DefaultMutableTreeNode(
                "Namespace: prefix = '" + attPrefix
                    "', URI = '" + attURI + "'");
            attribute.add(attNamespace);
          }
          current.add(attribute);
        }
        break;
      case XMLStreamConstants.END_ELEMENT:
        current = (DefaultMutableTreeNodecurrent.getParent();
        break;
      case XMLStreamConstants.CHARACTERS:
        Characters characters = (Charactersevent;
        if (!characters.isIgnorableWhiteSpace()
            && !characters.isWhiteSpace()) {
          String data = characters.getData();
          if (data.length() != 0) {
            DefaultMutableTreeNode chars = new DefaultMutableTreeNode(
                "Character Data: '" + characters.getData()
                    "'");
            current.add(chars);
          }
        }
        break;
      case XMLStreamConstants.DTD:
        DTD dtde = (DTDevent;
        DefaultMutableTreeNode dtd = new DefaultMutableTreeNode(
            "DTD: '" + dtde.getDo*****entTypeDeclaration() "'");
        current.add(dtd);
      default:
        System.out.println(event.getClass().getName());
      }
    }
  }

}
/* From the book: Hardcore Java
* Title: Java and XML
* Third Edition: December 2006
* ISBN 10: 0-596-10149-X
* ISBN 13: 9780596101497
* http://www.oreilly.com/
* Java Code Example at http://www.JavaFAQ.nu
*/



References.

The list of classes which were used on this page you can find below. The links to Java API contain official SUN documentation about all used classes.




[ Go Back ]



Home Code Examples Java Forum All Java Tips Books Submit News, Code... Search... Offshore Software Tech Doodling

RSS feed Java FAQ RSS feed Java FAQ News     

    RSS feed Java Forums RSS feed Java Forums

All logos and trademarks in this site are property of their respective owner. The comments are property of their posters, all the rest 1999-2006 by Java FAQs Daily Tips.

Interactive software released under GNU GPL, Code Credits, Privacy Policy