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]