XElement 和 XDocument 对象的有效内容(LINQ to XML)

本文介绍可传递给构造函数的有效参数,以及用于向元素和文档添加内容的方法。

XElement 构造函数的有效类型

查询计算的结果通常是 IEnumerable<T>XElementIEnumerable<T>XAttribute。 可以将 XElement 集合或 XAttribute 对象传递给 XElement 构造函数。 这就是为什么将查询的结果作为内容传递到用于填充 XML 树的方法和构造函数中很方便。

添加简单内容时,可以传递各种类型给此方法,包括:

添加复杂内容时,可以将各种类型的内容传递给此方法,包括:

如果对象实现 IEnumerable<T>,则会枚举对象中的集合,并添加集合中的所有项。 如果集合包含 XNodeXAttribute 对象,则单独添加集合中的每个项。 如果集合包含文本(或转换为文本的对象),则集合中的文本将串联并添加为单个文本节点。

如果内容为 null,则不添加任何内容。 传递集合时,集合中的项可以为 null。 集合中的 null 项对树没有影响。

添加的属性在其包含元素中必须具有唯一的名称。

添加 XNodeXAttribute 对象时,如果新内容没有父级,则这些对象只是附加到 XML 树。 如果新内容已经有父级,并且是另一 XML 树的一部分,则克隆新内容,并将新克隆的内容附加到 XML 树。

XDocument 构造函数的有效类型

无法将属性和简单内容添加到文档中。

需要您创建 XDocument 的情况不是很多。 相反,通常可以使用 XElement 根节点创建 XML 树。 除非有创建文档的特定要求(例如,因为必须在顶级创建处理指令和注释,或者必须支持文档类型),否则使用 XElement 作为根节点通常更方便。

XDocument 构造函数的有效类型包括:

  • 零个或一个 XDocumentType 对象。 文档类型必须先于元素。
  • 零个或一个元素。
  • 零个或多个注释。
  • 零个或多个处理指令。
  • 零个或多个仅包含空白的文本节点。

用于添加内容的构造函数和函数

下面的方法允许您将子内容添加到 XElementXDocument 中:

方法 描述
XElement 构造一个 XElement
XDocument 构造一个 XDocument
Add 添加到 XElementXDocument 的子内容的末尾。
AddAfterSelf XNode 后面添加内容。
AddBeforeSelf XNode 前面添加内容。
AddFirst XContainer 的子内容的开头添加内容。
ReplaceAll 替换 XElement 的所有内容(子节点和属性)。
ReplaceAttributes 替换 XElement 的属性。
ReplaceNodes 用新内容替换子节点。
ReplaceWith 用新内容替换节点。

另请参阅