Поделиться через


Допустимое содержимое объектов XElement и XDocument (LINQ to XML)

В этой статье описываются допустимые аргументы, которые можно передать конструкторам и методам, используемым для добавления содержимого в элементы и документы.

Допустимые типы для конструктора XElement

Запросы часто оцениваются как IEnumerable<T>XElement или IEnumerable<T>XAttribute. Коллекции XElement или XAttribute объектов можно передать конструктору XElement. Именно поэтому удобно передавать результаты запроса в виде содержимого в методы и конструкторы, которые используются для заполнения деревьев XML.

При добавлении простого содержимого в этот метод можно передать различные типы, включая:

При добавлении сложного содержимого в этот метод можно передать различные типы, включая:

Если объект реализует IEnumerable<T>, перечисляется коллекция в объекте, а все элементы в коллекции добавляются. Если коллекция содержит объекты XNode или XAttribute, каждый элемент в коллекции добавляется отдельно. Если коллекция содержит текст (или объекты, преобразованные в текст), текст в коллекции объединяется и добавляется в виде одного текстового узла.

Если содержимое null, ничего не добавляется. При передаче коллекции элементы в коллекции могут быть null. Элемент null в коллекции не влияет на дерево.

Добавленный атрибут должен иметь уникальное имя в его содержаемом элементе.

При добавлении XNode или XAttribute объектов, если новое содержимое не имеет родительского элемента, объекты просто присоединяются к xml-дереву. Если новое содержимое уже привязано и является частью другого XML-дерева, новое содержимое клонируется, и клонированное содержимое присоединяется к XML-дереву.

Допустимые типы для конструктора XDocument

Атрибуты и простое содержимое нельзя добавить в документ.

Нет много сценариев, требующих, чтобы вы создали XDocument. Вместо этого вы обычно можете создавать XML-деревья с XElement корневым узлом. Если у вас нет определенного требования к созданию документа (например, так как вам нужно создавать инструкции и комментарии на верхнем уровне или поддерживать типы документов), часто удобнее использовать XElement в качестве корневого узла.

Допустимые типы для конструктора XDocument включают следующие:

  • Ноль или один объект XDocumentType. Типы документов должны быть перед элементом.
  • Ноль или один элемент.
  • Ноль или больше комментариев.
  • Ноль или больше инструкций по обработке.
  • Ноль или больше текстовых узлов, содержащих только пробелы.

Конструкторы и функции для добавления содержимого

Следующие методы позволяют добавлять дочернее содержимое в XElement или XDocument:

Метод Описание
XElement Создает XElement.
XDocument Создает XDocument.
Add Добавляет в конец дочернего содержимого XElement или XDocument.
AddAfterSelf Добавляет содержимое после XNode.
AddBeforeSelf Добавляет содержимое перед XNode.
AddFirst Добавляет содержимое в начало содержимого дочернего элемента XContainer.
ReplaceAll Заменяет все содержимое (дочерние узлы и атрибуты) объекта с идентификатором XElement.
ReplaceAttributes Заменяет атрибуты объекта XElement.
ReplaceNodes Заменяет дочерние узлы новым содержимым.
ReplaceWith Заменяет узел новым содержимым.

См. также