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 | 以新內容取代節點。 |