LINQ to XML - 修改

时间:2012-07-23 14:16:58

标签: c#-4.0 linq-to-xml

这让我整天都很生气。我有一个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");

有人有什么想法吗?

1 个答案:

答案 0 :(得分:0)

您需要使用XElement.SetAttributeValue()方法。只需选择要更改其属性的元素,并在其上调用SetAttributeValue()。如果没有您提供的名称的属性,则将创建新属性,否则现有属性的值将替换为新属性。请查看msdn以获取更多示例和更多详细信息:http://msdn.microsoft.com/en-us/library/system.xml.linq.xelement.setattributevalue.aspx