Hi,

 I've searched the archives and this details my problem, but doesnt offer me a 
solution. Basically, we need to be able to load a DOM and tell the builder not 
to create any nodes which are DeferredTextImpl's. We havn't had this problem 
'till we added 

      transformer.setOutputProperty(OutputKeys.INDENT, "yes");

to saving a DOM. Now when we load the DOM everwhere were we have 
(Element)nodes.getNode(i) it causes a ClassCastException. The exception is 
because now node's are not exclusively Elements but DeferredTextImpl's aswell 
(see 
http://xml.apache.org/xerces-j/apiDocs/org/apache/xerces/dom/DeferredTextImpl.html).
 
We expected that 

        factory.setIgnoringElementContentWhitespace(true);

would solve the problem, but it didn't. I've also tried document.normalise() 
after generating the DOM but we are still getting the CCE's?

 We can't normalise or validate against a dtd when saving as we sometimes load 
in externally generated XML files.

Any help would be much apprecitated.

<code>
   public static Document generateDOM(InputSource p_is)
      throws SAXException, IOException, ParserConfigurationException
   {
      DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();

      factory.setIgnoringElementContentWhitespace(true);

      factory.setIgnoringComments(true);

      DocumentBuilder builder = factory.newDocumentBuilder();
      
      return builder.parse(p_is);
   }
</code>

From: Jeff Greif <[EMAIL PROTECTED]>
Subject: ClassCastException
Date: Thu, 7 Aug 2003 08:05:07 -0700
Content-Type: text/plain;
        charset="iso-8859-1"

A DeferredTextImpl is a text node, not any kind of Element.  This could
happen if
  -- the document structure had changed and the code hadn't kept up
  -- more likely, the treatment of white space is different, so a text node
is now appearing (and didn't on the other machines) between elements, e.g.
the x and y children of z in <z><x/><y/></z>.  This would happen if the
document weren't normalized and was not validated against a DTD or Schema.

Jeff

----- Original Message ----- 
From: "Matt Cohen" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Thursday, August 07, 2003 12:24 AM
Subject: ClassCastException


> Hi,
>
> I've been developing using Xerces 2.4.0 and have successfully completed
xsd
> validation with schema in my application.
>
> However, now that I've moved it to our test machines, I'm getting the
> following exception:
>
> ClassCastException: com.apache.xerces.dom.DeferredTextImpl
>
> when I try to cast a Node to an Element:
>
> Element elem = (Element)sourceElem.getFirstChild();
>
> And sourceElem is definately not null.
>
> Now, I have xercesImpl.jar at the front of the classpath so no other class
> copy could be picked up instead.  And I can't seem to get why this is so?
> Is there any other possible package that could cause this?  Anyone have
any
> thoughts?
>
> Thanks,
> -Matt

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to