Допустимое содержимое объектов XElement и XDocument (LINQ to XML)
В этой статье описываются допустимые аргументы, которые можно передать конструкторам и методам, используемым для добавления содержимого в элементы и документы.
Допустимые типы для конструктора XElement
Запросы часто оцениваются как IEnumerable<T>XElement или IEnumerable<T>XAttribute. Коллекции XElement или XAttribute объектов можно передать конструктору XElement. Именно поэтому удобно передавать результаты запроса в виде содержимого в методы и конструкторы, которые используются для заполнения деревьев XML.
При добавлении простого содержимого в этот метод можно передать различные типы, включая:
- String
- Double
- Single
- Decimal
- Boolean
- DateTime
- TimeSpan
- DateTimeOffset
- Любой тип, реализующий
Object.ToString
. - Любой тип, реализующий IEnumerable<T>.
При добавлении сложного содержимого в этот метод можно передать различные типы, включая:
- XObject
- XNode
- XAttribute
- Любой тип, реализующий IEnumerable<T>
Если объект реализует 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 | Заменяет узел новым содержимым. |