You are viewing a plain text version of this content. The canonical link for it is here.
Posted to j-dev@xerces.apache.org by "Detlev Beutner (JIRA)" <xe...@xml.apache.org> on 2004/12/07 11:38:09 UTC

[jira] Created: (XERCESJ-1033) Empty CDATA section is not retrievable (child is null)

Empty CDATA section is not retrievable (child is null)
------------------------------------------------------

         Key: XERCESJ-1033
         URL: http://nagoya.apache.org/jira/browse/XERCESJ-1033
     Project: Xerces2-J
        Type: Bug
  Components: DOM  
    Versions: 2.6.2    
 Environment: JDK 1.4.2
    Reporter: Detlev Beutner


If a CDATA section is empty, ie <![CDATA[]]>, it is not possible to retrieve this node (eg by getFirstChild()). Instead, null is returned.
>From org.w3c.dom.Node javadoc, getFirstChild() only returns null if there is *no* child. And if there is a CDATA section child, getNodeValue returns "content of the CDATA Section", so in this case by getFirstChild().getNodeValue() an empty string must be returned. In fact, by this call, a NullPointerException gets thrown.

XML-test-document:
-----cut-----cut-----cut-----cut-----cut-----cut-----cut-----cut-----cut-----cut-----cut-----
<test><![CDATA[]]></test>
-----cut-----cut-----cut-----cut-----cut-----cut-----cut-----cut-----cut-----cut-----cut-----

Java-test-program:
-----cut-----cut-----cut-----cut-----cut-----cut-----cut-----cut-----cut-----cut-----cut-----
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;

public class XercesTester {

    public static void main(String[] args) {
        try{
            DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
            DocumentBuilder parser = factory.newDocumentBuilder();
            Document doc = parser.parse("c:/test.xml");
            Element testNode = doc.getDocumentElement();
            System.out.println("Test Root Node: " + testNode.getNodeName());
            System.out.println("Node Value of Root Node: " + testNode.getNodeValue());
            Node cDataNode = testNode.getFirstChild();
            if (cDataNode == null) {
                System.out.println("CDATA Node is null - everything stopped, xml implementation failed!");
            } else {
                System.out.println("CDATA Node: " + cDataNode.getNodeName());
                System.out.println("Node Value of CDATA Node: ---" + cDataNode.getNodeValue() + "---");
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
-----cut-----cut-----cut-----cut-----cut-----cut-----cut-----cut-----cut-----cut-----cut-----

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://nagoya.apache.org/jira/secure/Administrators.jspa
-
If you want more information on JIRA, or have a bug to report see:
   http://www.atlassian.com/software/jira


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