<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -158,8 +158,10 @@ class XmlNode
       if c.is_a?(REXML::CData)
         return @element.replace_child(c,new_cdata)
       end
-    end
+    end    
     @element &lt;&lt; new_cdata
+  rescue RuntimeError =&gt; e            
+    @element &lt;&lt; REXML::Text.new(e.message)
   end
   
   def cdata</diff>
      <filename>lib/xml_node.rb</filename>
    </modified>
    <modified>
      <diff>@@ -64,7 +64,7 @@ class TestXmlNode &lt; Test::Unit::TestCase
   end
   
   def test_generate_nice_xml
-    assert_equal &quot;&lt;?xml version='1.0'?&gt;\n&lt;feed&gt;\n  &lt;element&gt;test&lt;/element&gt;\n  &lt;element/&gt;\n&lt;/feed&gt;&quot;, XmlNode.new('feed') { |n| n &lt;&lt; XmlNode.new('element', 'test'); n &lt;&lt; XmlNode.new('element') }.to_xml
+    assert_equal &quot;&lt;?xml version='1.0'?&gt;\n&lt;feed&gt;\n&lt;element&gt;\ntest\n&lt;/element&gt;\n&lt;element/&gt;\n&lt;/feed&gt;&quot;, XmlNode.new('feed') { |n| n &lt;&lt; XmlNode.new('element', 'test'); n &lt;&lt; XmlNode.new('element') }.to_xml
   end
   
   def test_add_array_of_nodes
@@ -78,6 +78,12 @@ class TestXmlNode &lt; Test::Unit::TestCase
   
   def test_nil
     assert_equal '&lt;nil/&gt;', XmlNode.new('nil', nil).to_s
+  end          
+  
+  def test_fail_by_stating_error_when_cdata_is_nested
+    a = XmlNode.new('root')
+    a.cdata = ']]&gt;'
+    assert_equal &quot;&lt;?xml version='1.0'?&gt;\n&lt;root&gt;\nIllegal character &amp;apos;]]&amp;gt;&amp;apos; in raw string &amp;quot;]]&amp;gt;&amp;quot;\n&lt;/root&gt;&quot;, a.to_xml
   end
   
     </diff>
      <filename>test/test_generating.rb</filename>
    </modified>
    <modified>
      <diff>@@ -35,9 +35,16 @@ class TestXmlNode &lt; Test::Unit::TestCase
     assert_equal '1', xml.find(:first, '//elem').text
   end
 
+  def test_find_first
+    xml = XmlNode.parse('&lt;feed&gt;&lt;elem&gt;1&lt;/elem&gt;&lt;elem&gt;2&lt;/elem&gt;&lt;elem&gt;3&lt;/elem&gt;&lt;/feed&gt;')
+    assert_equal '1', xml.find(:first, '//elem').text
+  end
+
   def test_find_all
     xml = XmlNode.parse('&lt;feed&gt;&lt;elem&gt;1&lt;/elem&gt;&lt;elem&gt;2&lt;/elem&gt;&lt;elem&gt;3&lt;/elem&gt;&lt;/feed&gt;')
     assert_equal ['1', '2', '3'], xml.find(:all, '//elem').collect(&amp;:text)
-  end
+  end           
+  
+  
 
 end
\ No newline at end of file</diff>
      <filename>test/test_parsing.rb</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>8cce3d86f733e6e8d14d2db102943513c67ec6b6</id>
    </parent>
  </parents>
  <author>
    <name>Tobias L&#252;tke</name>
    <email>tobi@jadedpixel.com</email>
  </author>
  <url>http://github.com/tobi/xml_node/commit/f9fb74b22468c638ffa327850b396a002c428cd1</url>
  <id>f9fb74b22468c638ffa327850b396a002c428cd1</id>
  <committed-date>2008-07-07T09:57:35-07:00</committed-date>
  <authored-date>2008-07-07T09:57:35-07:00</authored-date>
  <message>Handle nested CData sections by stating the error in the resulting XML</message>
  <tree>56de66ff5e69360af0444bb7a5da13a7e1ef7e94</tree>
  <committer>
    <name>Tobias L&#252;tke</name>
    <email>tobi@jadedpixel.com</email>
  </committer>
</commit>
