如何使用Linq查询更新xml中的节点属性?
我有一个XDocument。此文档中的所有节点都有一个属性UserId。我想将此属性的值0更改为1。如何使用Linq查询实现这一点。我用过这个如何使用Linq查询更新xml中的节点属性?,linq,Linq,我有一个XDocument。此文档中的所有节点都有一个属性UserId。我想将此属性的值0更改为1。如何使用Linq查询实现这一点。我用过这个 MyNewUserPermission.Descendants("menuNode").Single.SetAttributeValue("userId", Me.UserId) 它不工作。显示错误 Sequence contains more than one element xml文件 <menuNode url="" title="Reg
MyNewUserPermission.Descendants("menuNode").Single.SetAttributeValue("userId", Me.UserId)
它不工作。显示错误
Sequence contains more than one element
xml文件
<menuNode url="" title="Register" id="mnuMainRegister" value="true" userId ="0">
<menuNode url="Company.aspx?Name=Company" title="Company" id="mnuCompany" value="true" userId ="0"/>
<menuNode url="Company.aspx?Name=User" title="SubCategory" id="mnuSubcategory" value="true" userId ="0"/>
<menuNode url="Common.aspx?Name=Category" title="Category" id="mnuCategory" value="true" userId ="0"/>
<menuNode url="Common.aspx?Name=Employee" title="Employee" id="mnuEmployee" value="true" userId ="0"/>
<menuNode url="Common.aspx?Name=Product" title="Product" id="mnuProduct" value="true" userId ="0"/>
<menuNode url="Common.aspx?Name=SaleArea" title="SaleArea" id="mnuSaleArea" value="true" userId ="0"/>
<menuNode url="Common.aspx?Name=SalePlace" title="SalePlace" id="mnuPlace" value="true" userId ="0"/>
</menuNode>
我不知道这可以用linq来完成。另一方面,请告诉我的代码有什么问题。由于您的菜单节点包含嵌套的菜单节点,因此单个操作将引发异常,如
MyNewUserPermission。子体(“菜单节点”)
将返回多个值,而不仅仅是单个操作所需的一个值
尝试.First
操作,而不是.Single
操作,或者如果menuNode是文档的根,则尝试MyNewUserPermission.Root.SetAttributeValue(“userId”,Me.userId)
如果要设置所有Menuode元素的属性(包括嵌套的属性),请循环所有
MyNewUserPermission.subjections(“Menuode”)
元素并设置每个元素的属性。能否显示XML文档?或者至少是你试图更新的部分?现在告诉你,我更新了我的问题。谢谢你,我是在不使用循环的情况下问你,我能做同样的事情吗?如果你想更新每个节点,那么你需要一个循环。Linq很适合查询,但一般来说,更新集合中的多个项仍然需要循环。