You are viewing a plain text version of this content. The canonical link for it is here.
Posted to j-users@xerces.apache.org by Max Gravitt <Ma...@sas.com> on 2002/05/21 19:28:06 UTC

using insertBefore, getting DOM006 Hierarchy request error

Hi,

I'm trying to use the insertBefore method to insert a node from one part of the document to another.  I'm getting a "DOM006 Hierarchy request error".  I have an idea of what this error means, but I don't know why I'm getting it.  

My XML looks something like this:

<defaults>
	<defaultevents>
		<event name="event1" />
		<event name="event2" />
	</defaultevents>
</defaults>

<listeners>
	<listener name="listener1" >
		<event name="event3" />
		<event name="event4" />
	</listener>
</listeners>

I'm trying to read all events under "defaultevents" and insert them before the events listed under each "listener".  So after the transformation, "listener1" would have 4 events.

My code looks like this:

	NodeList defaultEventsNodes = doc.getElementsByTagName("defaultevents");
        if (null == defaultEventsNodes || defaultEventsNodes.getLength() == 0) {
            return doc;
        }
        
        NodeList listenersNodes = doc.getElementsByTagName("listeners");
        NodeList listenerNodes = (listenersNodes.item(0)).getChildNodes();
        NodeList defaultEvents = (defaultEventsNodes.item(0)).getChildNodes();
        
        for (int i=0; i< rootStates.getLength(); i++) {
            Node tempListenerNode = listenerNodes.item(i);
            for (int j=0; j< defaultEvents.getLength(); j++) {
                Node tempEventNode = defaultEvents.item(j);
                 tempListenerNode.insertBefore(tempEventNode, tempListenerNode.getFirstChild());  // exception here
            }
        }

I get the exception "DOMException: DOM006 Hierarchy request error" when I invoke the "insertBefore" method.

Can anyone provide any more details about what's going on here?  Or is there some other (better) way to accomplish this?

thanks in advance,
Max

Re: using insertBefore, getting DOM006 Hierarchy request error

Posted by Morten Primdahl <mo...@it-c.dk>.
Max Gravitt wrote:
>        
>         NodeList listenersNodes = doc.getElementsByTagName("listeners");
>         NodeList listenerNodes = (listenersNodes.item(0)).getChildNodes();

Note, the listenerNodes may content text nodes here.

>         NodeList defaultEvents = 
> (defaultEventsNodes.item(0)).getChildNodes();
>        
>         for (int i=0; i< rootStates.getLength(); i++) {
>             Node tempListenerNode = listenerNodes.item(i);

What is the relationship between rootStates and listenerNodes?

>             for (int j=0; j< defaultEvents.getLength(); j++) {
>                 Node tempEventNode = defaultEvents.item(j);
>                  tempListenerNode.insertBefore(tempEventNode, 
> tempListenerNode.getFirstChild());  // exception here
>             }
>         }
> 
> I get the exception "DOMException: DOM006 Hierarchy request error" when 
> I invoke the "insertBefore" method.
> 
> Can anyone provide any more details about what's going on here?  Or is 
> there some other (better) way to accomplish this?

Perhaps you're trying to insert the node under a text node?

if(tempListenerNode.getNodeType() == Node.TEXT_NODE) {
   continue;
}
else if(tempListenerNode.getNodeType() == Node.ELEMENT_NODE) {
   //Bingo - insert..
}


HTH,

Morten




---------------------------------------------------------------------
To unsubscribe, e-mail: xerces-j-user-unsubscribe@xml.apache.org
For additional commands, e-mail: xerces-j-user-help@xml.apache.org