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]