hi john,

i am definitely missing something fundamental here.

i did the setContentAsDOM as you said, and there's this runtime exception:

XML:DB Exception occured 1 Collection Document Malformed

this is the code fragment:

                :
                :
         Database database = (Database) c.newInstance();
         DatabaseManager.registerDatabase(database);
         col = DatabaseManager.getCollection("xmldb:xindice:///db/misc");
         XMLResource xmlResource = (XMLResource) col.getResource("test");
         Node node = xmlResource.getContentAsDOM();
         Document doc = node.getOwnerDocument();
         Element el = doc.createElement("newchild");
         node.appendChild(el);
         xmlResource.setContentAsDOM(node);
         col.storeResource(xmlResource);

         NodeList nl = node.getChildNodes();

         for (int i = 0; i < nl.getLength(); i++)
                System.out.println("Node " + i + ": " + 
nl.item(i).getNodeName());
        }
        catch (XMLDBException e)
        {
           System.err.println("XML:DB Exception occured " + e.errorCode + "
" +
             e.getMessage());
        }
        finally
        {
           if (col != null) {
              col.close();
        }
                :
                :

and this is the xml file:

<?xml version="1.0"?>
<parent>
        <child id="123">Text goes here</child>
</parent>

many thanks,
-nani

-----Original Message-----
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]
Sent: Wednesday, March 27, 2002 5:14 PM
To: [EMAIL PROTECTED]
Subject: RE: NullPointerException: appendChild()


Hi,

You need to call setContentAsDOM on the XMLResource just before calling
collection.store(resource), passing in the updated node, of course.

John

> -----Original Message-----
> From: Jayaram Narayana [mailto:[EMAIL PROTECTED]
> Sent: mercredi, 27. mars 2002 12:40
> To: [EMAIL PROTECTED]
> Subject: RE: NullPointerException: appendChild()
>
>
> john,
>
> i have done collection.store(resource) and it is status quo.
> not sure on
> which object i must be calling the other method you mentioned -
> setContent().
>
> thanks,
> -nani
>
> -----Original Message-----
> From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]
> Sent: Wednesday, March 27, 2002 4:44 PM
> To: [EMAIL PROTECTED]
> Subject: RE: NullPointerException: appendChild()
>
>
> Hi Nani,
>
> I think you need to call setContent (or the DOM equivalent) and then
> collection.store(resource). Or did you do that already?
>
> John
>
> > -----Original Message-----
> > From: Jayaram Narayana [mailto:[EMAIL PROTECTED]
> > Sent: mercredi, 27. mars 2002 12:10
> > To: [EMAIL PROTECTED]
> > Subject: RE: NullPointerException: appendChild()
> >
> >
> > hey john,
> >
> > yes, i got the exact same thought as you did and tried the following
> > (fragment):
> >
> >                     :
> >                     :
> >          Database database = (Database) c.newInstance();
> >          DatabaseManager.registerDatabase(database);
> >          col =
> > DatabaseManager.getCollection("xmldb:xindice:///db/misc");
> >          XMLResource xmlResource = (XMLResource)
> > col.getResource("test");
> >          Node node = xmlResource.getContentAsDOM();
> >          Document doc = node.getOwnerDocument();
> >          Element el = doc.createElement("newchild");
> >          node.appendChild((Node) el);
> >          NodeList nl = node.getChildNodes();
> >
> >          for (int i = 0; i < nl.getLength(); i++)
> >             System.out.println("Node " + i + ": " +
> > nl.item(i).getNodeName());
> >
> >                     :
> >                     :
> >
> > here's the output i get:
> >
> > Node 0: parent
> > Node 1: newchild
> >
> > which means we were right. however, when i retrieve the
> > document thru the
> > console admin, i cannot see "newchild"
> >
> > now what could be wrong? is there some commit i need to do on
> > the database?
> >
> > thanks,
> > -nani
> >
> > -----Original Message-----
> > From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]
> > Sent: Wednesday, March 27, 2002 4:12 PM
> > To: [EMAIL PROTECTED]
> > Subject: RE: NullPointerException: appendChild()
> >
> >
> > Hi Nani,
> >
> > I don't know if this is relevant, but cloneNode returns a
> > copy with a parent
> > value of null. Since nodes added to other node structures
> > need to have the
> > same parent, this might be your problem. Try using
> > getOwnerDocument() to get
> > the parent, then create a new element to append.
> >
> > John
> >
> > > -----Original Message-----
> > > From: Jayaram Narayana [mailto:[EMAIL PROTECTED]
> > > Sent: mercredi, 27. mars 2002 11:11
> > > To: 'Xindice Dev. Group'
> > > Subject: NullPointerException: appendChild()
> > >
> > >
> > > hi!
> > >
> > > when i try to run this code against the xml given below i get
> > > the following
> > > exception:
> > >
> > > Has Children: true
> > > Exception in thread "main" java.lang.NullPointerException
> > > at
> > > org.apache.xindice.xml.dom.ContainerNodeImpl.appendChild(Unkno
> > > wn Source)
> > >
> > > the code fragment is:
> > >           :
> > >           :
> > >          Database database = (Database) c.newInstance();
> > >          DatabaseManager.registerDatabase(database);
> > >          col =
> > > DatabaseManager.getCollection("xmldb:xindice:///db/misc");
> > >          XMLResource xmlResource = (XMLResource)
> > > col.getResource("test");
> > >          Node node = xmlResource.getContentAsDOM();
> > >              System.out.println("Has Children: " +
> > node.hasChildNodes());
> > >          Node newNode = node.cloneNode(true);
> > >          node.appendChild(newNode);
> > >           :
> > >           :
> > >
> > > the xml file is:
> > >
> > > <?xml version="1.0"?>
> > > <parent>
> > >   <child id="123">Text goes here</child>
> > > </parent>
> > >
> > > i am not able to figure out what i am doing wrong. any help
> > > will be greatly
> > > appreciated.
> > >
> > > thanks in advance,
> > > -nani
> > >
> > >
> >
> >
>
>

Reply via email to