Udostępnij za pośrednictwem


Can I put CDATA inside a CDATA node?

Well. The answer is no. CDATAs cannot be nested in general. The nested CDATA terminating sequence will terminate the outer CDATA. However there is a trick where you can put CDATA in two consequitive CDATA sections. It works by splitting the terminating sequence in two halves. 

There is one caviat though - VB 9.0 does not allow a sequence of more than one CDATA as a standalone object (one is fine though). You will have to put this sequence into an element  <a> ... </a>  or a fragment <> ... </> .

Here is an example (element is used):

Module Module1

    Sub Main()

        Dim c1 = _

        <a><![CDATA[<![CDATA[some cdata here]]]><![CDATA[]>]]></a>

        Dim c2 = _

        <a><![CDATA[<![CDATA[some cdata here]]]]><![CDATA[>]]></a>

        Console.WriteLine(c1.Value)

        Console.WriteLine(c2.Value)

    End Sub

End Module

========  Output:

<![CDATA[some cdata here]]>
<![CDATA[some cdata here]]>