0

这让我整天发疯。我有一个 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");

有人有想法么?

4

1 回答 1

0

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

于 2012-07-23T15:15:15.817 回答