有許多方式可以修改檔中的節點和內容。 您可以:
使用 Value 屬性變更節點的值。
將節點取代為新的節點,以修改整個節點集。 這是使用InnerXml屬性來完成的。
使用 RemoveChild 方法,將現有的節點取代為新的節點。
使用XmlCharacterData、 AppendData或 InsertData 方法,將其他字元新增至繼承自 ReplaceData 類別的節點。
使用DeleteData方法在繼承自XmlCharacterData的節點類型上移除字元範圍,以便修改內容。
變更節點值的簡單技巧是使用 node.Value = "new value";。 下表列出這個單一代碼行運作的節點類型,以及該節點類型的精確變動數據。
| 節點類型 | 數據已變更 |
|---|---|
| 屬性 | 屬性的值。 |
| CDATA 節區 | CDATASection 的內容。 |
| 評論 | 批注的內容。 |
| 處理指令 | 內容,不包括目標。 |
| 文字 | 文字的內容。 |
| XML聲明 | 宣告的內容,不包括 <?xml 和 ?> 標記。 |
| 空白 | 空格符的值。 您可以將值設定為四個辨識的 XML 空格符之一:空格、索引標籤、CR 或 LF。 |
| 重要空白 | 顯著空格符的值。 您可以將值設定為四個辨識的 XML 空格符之一:空格、索引標籤、CR 或 LF。 |
數據表中未列出的任何節點類型都不是設定值的有效節點類型。 在任何其他節點類型上設定值會 InvalidOperationException擲回 。
屬性 InnerXml 會變更目前節點之子節點的標記。 設定此屬性會使子節點被替換為指定字串的解析內容。 解析是在目前的命名空間環境中完成。 此外, InnerXml 移除多餘的命名空間宣告。 因此,許多剪下和貼上作業不會因冗餘的命名空間宣告而增加文件的大小。 如需顯示命名空間對 InnerXml 作業效果的程式碼範例,請參閱 InnerXml 屬性。
使用 ReplaceData 和 RemoveChild 方法時,方法會傳回已取代或移除的節點。 然後,這個節點就可以在 XML 檔物件模型 (DOM) 中重新插入其他位置。 方法 ReplaceData 會在插入檔中的節點上執行兩次驗證檢查。 第一次檢查是確保某個節點能夠成為另一個能容納其類型子節點的節點之子。 第二次檢查可確保插入的節點不是其成為子系之節點的祖系。 違反上述任一條件會拋出 InvalidOperationException。
從允許編輯的節點新增或移除唯讀子系是可以的。 然而,嘗試修改唯讀節點本身會引發InvalidOperationException。 其中一個範例是修改 XmlEntityReference 節點的子系。 子系是唯讀的,無法修改。 任何嘗試修改它們的動作都會拋出 InvalidOperationException。