这让我整天都很生气。我有一个xdocument,只想更改一个值。
xml如下所示
<session>
<immediate>
<pivot name="test">
<axes>
<axis position="SLICERS">
<attribute name="Book">
<selection value="Book_Name" type="Book" />
</attribute>
<attribute name="Result Namespace">
<selection value="blah blah" />
</attribute>
<attribute name="Date">
<selection value="2012-05-16" />
</attribute>
<attribute name="Measure">
<selection value="123" />
</attribute>
</axis>
<axis position="SIDE">
<attribute name="ttx" mode="ALL"></attribute>
</axis>
<axis position="TOP">
<attribute name="hhy" mode="ALL"></attribute>
</axis>
</axes>
<source name="risk" />
<aggregate expression="SUM(Money Value)" />
<grid-processor name="errors" />
</pivot>
</immediate>
</session>
我想要做的只是改变
<attribute name="Book">
<selection value="Book_Name" type="Book" />
</attribute>
到
<attribute name="Book">
<selection value="CorrectBookName" type="Book" />
</attribute>
我想使用LINQ并尝试过XElement - 我可以获得阻止但无法更新
XElement amend = xdoc.Descendants("attribute").First(el => (String)el.Attribute("selection") == "value");
有人有什么想法吗?
答案 0 :(得分:0)
您需要使用XElement.SetAttributeValue()方法。只需选择要更改其属性的元素,并在其上调用SetAttributeValue()。如果没有您提供的名称的属性,则将创建新属性,否则现有属性的值将替换为新属性。请查看msdn以获取更多示例和更多详细信息:http://msdn.microsoft.com/en-us/library/system.xml.linq.xelement.setattributevalue.aspx