Как выполнить эту проблему в реальном мире: с помощью редактора XML для создания XML-документа, который будут загружены в систему управления контентом, попробуйте написать статью о разделах CDATA. Ваш обычный трюк вложения примеров кода в разделе CDATA не сможет вас здесь. Вы можете себе представить, как я это узнал.
Но в большинстве случаев вы не столкнетесь с этим, и вот почему: если вы хотите сохранить (скажем) текст XML-документа в качестве содержимого XML, вы, вероятно, используете метод DOM, например:
XmlElement elm = doc.CreateElement("foo");
elm.InnerText = "<[CDATA[[Is this a problem?]]>";
И DOM вполне разумно избегает & lt; и>, что означает, что вы случайно не ввели раздел CDATA в свой документ.
О, и это интересно:
XmlDocument doc = new XmlDocument();
XmlElement elm = doc.CreateElement("doc");
doc.AppendChild(elm);
string data = "<![[CDATA[This is an embedded CDATA section]]>";
XmlCDataSection cdata = doc.CreateCDataSection(data);
elm.AppendChild(cdata);
Это, вероятно, идеология .NET DOM, но это не вызывает исключения. Исключение выбрано здесь:
Console.Write(doc.OuterXml);
Я бы предположил, что то, что происходит под капотом, заключается в том, что XmlDocument использует XmlWriter для вывода своего результата, а XmlWriter проверяет корректность при записи.