Почему вновь созданные файлы наследуются от «Родительского объекта» вместо родительской папки в Windows Server 2012?

[Д0] S. Ответ Lott прав: вы не кодируете конечный тег, вы разбиваете его на несколько разделов CDATA.

Как выполнить эту проблему в реальном мире: с помощью редактора 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 проверяет корректность при записи.

0
задан Community 13 April 2017 в 12:46
поделиться