Search code examples
xmlcdata

Legally use CDATA in XML


I have an XML file which XML parser choke on. A part of it is :

<closedDeal><customer><![CDATA[ABC ]]></customer></closedDeal>

The error I got is

The literal string ']]>' is not allowed in element content. Error processing resource

What is the correct way of using CDATA? I need CDATA because the data is read from Excel, and could contain illegal character such as ALT+ENTER whitespace.

Please help. Thanks.


Solution

  • What parser are you using? The sample you showed is definitely a valid XML. For example in .NET I successfully parsed this XML :

    <?xml version="1.0" encoding="utf-8" ?>
    <closedDeal>
      <customer><![CDATA[ABC ]]></customer>
    </closedDeal>
    

    using the following code:

    using System;
    using System.Xml.Linq;
    using System.Xml.XPath;
    
    public class Program
    {
        static void Main(string[] args)
        {
            var doc = XElement.Load("test.xml");
            doc.XPathSelectElement("//customer");
            Console.WriteLine(doc.Value);
        }
    }