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 的情况不是很多。 而是通常使用 XElement 根节点创建 XML 树。 除非对创建文档有特定要求(例如,因为必须在顶级创建处理指令和注释,或者必须支持文档类型),否则使用 XElement 作为根节点通常更为方便。
构造函数的有效类型 XDocument 包括:
- 零个或一个 XDocumentType 对象。 文档类型必须在元素之前。
- 零个或一个元素。
- 零个或多个注释。
- 零个或多个处理指令。
- 零个或多个仅包含空白的文本节点。
用于添加内容的构造函数和函数
下面的方法允许您将子内容添加到 XElement 或 XDocument 中:
方法 | 说明 |
---|---|
XElement | 构造一个 XElement。 |
XDocument | 构造一个 XDocument。 |
Add | 添加到 XElement 或 XDocument 的子内容的末尾。 |
AddAfterSelf | 在 XNode 后面添加内容。 |
AddBeforeSelf | 在 XNode 前面添加内容。 |
AddFirst | 在 XContainer 的子内容的开头添加内容。 |
ReplaceAll | 替换 XElement 的所有内容(子节点和属性)。 |
ReplaceAttributes | 替换 XElement 的属性。 |
ReplaceNodes | 用新内容替换子节点。 |
ReplaceWith | 用新内容替换节点。 |