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 | 用新内容替换节点。 |