W3C home > Mailing lists > Public > www-dom@w3.org > January to March 1999

Nodes and NodeLists

From: Nigel Byrnes <byrnes@prl.research.philips.com>
Date: Thu, 18 Feb 1999 16:30:34 +0000
Message-Id: <36CC402A.CDC8A85E@prl.research.philips.com>
To: www-dom@w3.org
Hi guys

I have just started using Sun's Java xml-ea2 DOM API (with some
success). That was until I started messing around with nodes &
nodelists. I checked out Dom Hamson's original post
http://lists.w3.org/Archives/Public/www-dom/1998OctDec/0129.html "An
observation about "live" NodeLists" and thought compiling a nodelist of
a xml document would be quite simple. so I tried to use his code [2] to
operate on a simple xml document [1] of mine. However, I get some
problems casting from type Node to NodeBase.

I think the cause of my problem is confusion about (abstract) interfaces
and (concrete) classes, as i'm not a computer coder by trade. So any
assistance regarding my utilisation of DOM will be gratefully received.

Thanks

Nigel

[1] The XML document

<?xml version="1.0" encoding="UTF-8"?>
<myDoc lenth="short">
 <title>This is Nigel's document</title>
 <para>This is a <em>short</em> document.</para>
 <para>It only exists to <em>demonstrate<em> a simple</em></em> XML
document.</para>
 <figure>
  <title>My figure</title>
  <graphic fileref="l:\sis\sea\15.jpeg"/>
 </figure>
</myDoc>

[2] Java file

import java.io.File;
import com.sun.xml.parser.Resolver;
import com.sun.xml.tree.XmlDocument;
import com.sun.xml.tree.XmlDocumentBuilder;
import com.sun.xml.tree.NodeBase;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import org.xml.sax.SAXParseException;

public class freeDom
{
    //
    // Reading and writing an XML document stored in a file.
    //
    public static void main (String args [])
    {
        InputSource     input;
        XmlDocument     doc;
        NodeBase        nl;


        if (args.length != 1) {
            System.err.println ("Usage: cmd filename");
            System.exit (1);
        }

        try {
            // turn the filename into an input source
            input = Resolver.getSource (new File (args [0]));

            // turn it into an in-memory object
            // ... the "false" flag says not to validate
            doc = XmlDocumentBuilder.createXmlDocument (input, false);

            // normalize text representation
            doc.getDocumentElement ().normalize ();

            // collect child nodes of myDoc
            nl = doc.getElementsByTagName("myDoc");

        } catch (SAXParseException err) {
            System.out.println ("** Parsing error"
                + ", line " + err.getLineNumber ()
                + ", uri " + err.getSystemId ());
            System.out.println("   " + err.getMessage ());
            // print stack trace as below

        } catch (SAXException e) {
            Exception   x = e.getException ();

            ((x == null) ? e : x).printStackTrace ();

        } catch (Throwable t) {
            t.printStackTrace ();
        }

        System.exit (0);
    }
}



--
      Nigel Byrnes

                               "We continue..." Pete Tong

Software Engineering and Applications Group,
Philips Research Labs,
Redhill.                           Tel: +44 (0)1293 815578
RH1 5HA.                           Fax: +44 (0)1293 815024
UK.                                GSM: +44 (0)7899 940391
                    Email: byrnes@prl.research.philips.com
Received on Thursday, 18 February 1999 11:32:20 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Friday, 22 June 2012 06:13:46 GMT