How can you prevent DeferredTextImpl? 2003-12-17 - By Tim Davidson
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 <jgreif@(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" <mcohen@(protected)> To: <xerces-j-user@(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: xerces-j-user-unsubscribe@(protected) For additional commands, e-mail: xerces-j-user-help@(protected)
|
|