Допустимое содержимое объектов XElement и XDocument
В этом разделе описываются допустимые аргументы, которые можно передавать конструкторам, а также методы, которые можно использовать для добавления содержимого в элементы и документы.
Допустимое содержимое
Возвращаемые запросами данные часто выражаются с помощью коллекций IEnumerable элементов XElement или с помощью коллекций IEnumerable атрибутов XAttribute. Можно передавать коллекции объектов XElement или XAttribute в конструктор XElement. Таким образом, передавать результаты запроса методам и конструкторам, используемым для заполнения XML-деревьев, удобно в виде содержимого.
При добавлении простого содержимого этому методу могут передаваться различные типы. Допустимые типы:
Любой тип, реализующий ToString.
Любой тип, реализующий IEnumerable.
При добавлении сложного содержимого этому методу могут передаваться различные типы:
Любой тип, реализующий IEnumerable
Если объект реализует интерфейс IEnumerable, коллекция в этом объекте перечисляется и добавляются все элементы коллекции. Если коллекция содержит объекты XNode или XAttribute, каждый ее элемент добавляется отдельно. Если коллекция содержит текст (или объекты, преобразованные в текст), текст в коллекции объединяется и добавляется в виде единого текстового узла.
Если содержимое имеет значение null, ничего не добавляется. При передаче коллекции ее элементы могут иметь значение null. Элементы коллекции со значением null не влияют на дерево.
Добавленный атрибут должен иметь уникальное имя внутри содержащего его элемента.
Если при добавлении объектов XNode или XAttribute новое содержимое не имеет родителя, то эти объекты просто добавляются к XML-дереву. Если же новое содержимое уже имеет родителя и является частью другого XML-дерева, тогда это содержимое клонируется, а вновь созданный клон присоединяется к XML-дереву.
Допустимое содержимое для документов
Атрибуты и простое содержимое не могут быть добавлены к документу.
Ситуации, когда необходимо создавать документ XDocument, встречаются нечасто. Вместо этого обычно имеется возможность создавать XML-деревья с корневым узлом XElement. Если отсутствуют конкретные требования по созданию документа (вызванные, например, необходимостью создания инструкций по обработке и комментариев на верхнем уровне или необходимостью поддержки типов документов), часто бывает удобнее всего в качестве корневого узла использовать XElement.
К допустимому содержимому для документа относится следующее:
Ноль или один объект XDocumentType. Типы документов должны указываться до элемента.
Ноль или один элемент.
Ноль или более комментариев.
Ноль или более инструкций по обработке.
Ноль или более текстовых узлов, содержащих только пробел.
Конструкторы и функции, допускающие добавление содержимого
Следующие методы позволяют добавлять дочернее содержимое к элементу XElement или к документу XDocument.
Метод |
Описание |
---|---|
Создает элемент XElement. |
|
Создает документ XDocument. |
|
Добавляет к концу дочернего содержимого элемента XElement или документа XDocument. |
|
Добавляет содержимое после XNode. |
|
Добавляет содержимое перед XNode. |
|
Добавляет содержимое в начале дочернего содержимого XContainer. |
|
Заменяет все содержимое (дочерние узлы и атрибуты) элемента XElement. |
|
Заменяет атрибуты элемента XElement. |
|
Заменяет дочерние узлы новым содержимым. |
|
Заменяет узел новым содержимым. |