[ http://issues.apache.org/jira/browse/XERCESJ-1033?page=comments#action_12362283 ]
Nathan Beyer commented on XERCESJ-1033: --------------------------------------- Here's some information I found. According to XML 1.0 [1] "An element with no content is said to be empty" and a CDATA section is a form of content, although not canonically. I found this posting on the XML Editor archivices that seems to back this up [2]. I would interpret this to mean that an empty CDATA section should be there, but not if it's canonicalized, as that would be an empty element. The XML 1.1 doesn't seem to clarify this any further. [1] http://www.w3.org/TR/2004/REC-xml-20040204/#NT-content [2] http://lists.w3.org/Archives/Public/xml-editor/2001JulSep/0002.html > Empty CDATA section is not retrievable (child is null) > ------------------------------------------------------ > > Key: XERCESJ-1033 > URL: http://issues.apache.org/jira/browse/XERCESJ-1033 > Project: Xerces2-J > Type: Bug > Components: DOM (Level 3 Core) > Versions: 2.6.2 > Environment: JDK 1.4.2 > Reporter: Detlev Beutner > Attachments: bug_1033_patch.txt > > 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://issues.apache.org/jira/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
