得到一个需要处理的XMl private string GetSaveItem() { XmlDocument xmlDoc = new XmlDocument(); xmlDoc.LoadXml("<menuCollection/>"); foreach (TreeNode node in trvAccessRight.CheckedNodes) { if (node != trvAccessRight.Nodes[0]) { XmlElement content = xmlDoc.CreateElement("menuItem"); content.SetAttribute("menuID", node.Value); xmlDoc.DocumentElement.AppendChild(content); } } return xmlDoc.OuterXml; } 将以上的获得的XMl字符串当参数传入存储过程中, 存储如下写 ALTER PROCEDURE [dbo].[usp_UserGroup_SetRight] (@GroupID INT ,@ChangedBy VARCHAR(50) ,@MenuXml XML) AS BEGIN --SET XACT_ABORT ON BEGIN TRY BEGIN TRANSACTION --delete DELETE FROM tbl_SysUserGroupRight WHERE GroupId = @GroupID --insert INSERT INTO tbl_SysUserGroupRight ( GroupId ,MenuID ,ChangedBy ,ChangedOn ) SELECT @GroupID ,menuList.row.value(N'@menuID' ,'VARCHAR(50)') AS MenuID ,@ChangedBy ,GETDATE() FROM @MenuXml.nodes('/menuCollection/menuItem') AS menuList(row) COMMIT TRANSACTION RETURN 1 END TRY BEGIN CATCH ROLLBACK TRANSACTION RETURN 0 END CATCH 更新可以借鉴上面的添加操作,