Oracle8i Application Developer's Guide - XML Release 3 (8.1.7) Part Number A86030-01 |
Library | Service | Contents | Index

Using XML Parser for Java, 7 of 22

## Using XML Parser for Java: DOMNamespace() Class

Figure 17-3 illustrates the main processes involved when parsing an XML document using the DOM interface. The DOMNamespace() method is applied in the parser process at the "bubble" that states "Apply other DOM methods". The following example illustrates how to use DOMNamespace():

- "XML Parser for Java Example 2: Parsing a URL -- DOMNamespace.java"

### XML Parser for Java Example 2: Parsing a URL -- DOMNamespace.java

    // This file demonstates a simple use of the parser and Namespace
    // extensions to the DOM APIs.
    // The XML file given to the application is parsed and the
    // elements and attributes in the document are printed.
    //

    import java.io.*;
    import java.net.*;

    import oracle.xml.parser.v2.DOMParser;

    import org.w3c.dom.*;
    import org.w3c.dom.Node;

    // Extensions to DOM Interfaces for Namespace support.
    import oracle.xml.parser.v2.XMLElement;
    import oracle.xml.parser.v2.XMLAttr;

    public class DOMNamespace
    {
       static public void main(String[] argv)
       {
          try
          {
             if (argv.length != 1)
             {
                // Must pass in the name of the XML file.
                System.err.println("Usage: DOMNamespace filename");
                System.exit(1);
             }

             // Get an instance of the parser
             Class cls = Class.forName("oracle.xml.parser.v2.DOMParser");
             DOMParser parser = (DOMParser)cls.newInstance();

    	 // Generate a URL from the filename.
    	 URL url = createURL(argv[0]);

    	 // Parse the document.
             parser.parse(url);

             // Obtain the document.
             Document doc = parser.getDocument();

             // Print document elements
             printElements(doc);

             // Print document element attributes
             System.out.println("The attributes of each element are: ");
             printElementAttributes(doc);
          }
          catch (Exception e)
          {
             System.out.println(e.toString());
          }
       }

       static void printElements(Document doc)
       {
          NodeList nl = doc.getElementsByTagName("*");
          XMLElement nsElement;

          String qName;
          String localName;
          String nsName;
          String expName;

          System.out.println("The elements are: ");
          for (int i=0; i < nl.getLength(); i++)
          {
             nsElement = (XMLElement)nl.item(i);

             // Use the methods getQualifiedName(), getLocalName(), getNamespace()
             // and getExpandedName() in NSName interface to get Namespace
             // information.

             qName = nsElement.getQualifiedName();
             System.out.println("  ELEMENT Qualified Name:" + qName);

             localName = nsElement.getLocalName();
             System.out.println("  ELEMENT Local Name    :" + localName);

             nsName = nsElement.getNamespace();
             System.out.println("  ELEMENT Namespace     :" + nsName);

             expName = nsElement.getExpandedName();
             System.out.println("  ELEMENT Expanded Name :" + expName);
          }

          System.out.println();
       }

       static void printElementAttributes(Document doc)
       {
          NodeList nl = doc.getElementsByTagName("*");
          Element e;
          XMLAttr nsAttr;
          String attrname;
          String attrval;
          String attrqname;

          NamedNodeMap nnm;
          int i, len;
          len = nl.getLength();
          for (int j=0; j < len; j++)
          {
             e = (Element) nl.item(j);
             System.out.println(e.getTagName() + ":");
             nnm = e.getAttributes();

             if (nnm != null)
             {
                for (i=0; i < nnm.getLength(); i++)
                {
                   nsAttr = (XMLAttr) nnm.item(i);

                   // Use the methods getQualifiedName(), getLocalName(),
                   // getNamespace() and getExpandedName() in NSName
                   // interface to get Namespace information.

                   attrname = nsAttr.getExpandedName();
                   attrqname = nsAttr.getQualifiedName();
                   attrval = nsAttr.getNodeValue();

                   System.out.println(" " + attrqname + "(" + attrname + ")" + " = "
    + attrval);
                }
             }
             System.out.println();
          }
       }

       static URL createURL(String fileName)
       {
          URL url = null;
          try
          {
             url = new URL(fileName);
          }
          catch (MalformedURLException ex)
          {
             File f = new File(fileName);
             try
             {
                String path = f.getAbsolutePath();
                String fs = System.getProperty("file.separator");
                if (fs.length() == 1)
                {
                   char sep = fs.charAt(0);
                   if (sep != '/')
                      path = path.replace(sep, '/');
                   if (path.charAt(0) != '/')
                      path = '/' + path;
                }
                path = "file://" + path;
                url = new URL(path);
             }
             catch (MalformedURLException e)
             {
                System.out.println("Cannot create url for: " + fileName);
                System.exit(0);
             }
          }
          return url;
       }
    }

Note: No DTD is input is shown in Example 2.

| Copyright © 1996-2000, Oracle Corporation. All Rights Reserved. |
Library | Service | Contents | Index