C# Xdocument修改所有匹配的属性

C# Xdocument修改所有匹配的属性,c#,linq,linq-to-xml,C#,Linq,Linq To Xml,这让我发疯,我已经试了两天了 我基本上希望根据名称替换值 我有如下xml: <session> <immediate> <diff name="TEST_DIFF"> <pivot name="(Original)"> <grid-processor name="mdStoredShape"/> <axes>

这让我发疯,我已经试了两天了

我基本上希望根据名称替换值

我有如下xml:

    <session>   
      <immediate>   
        <diff name="TEST_DIFF">
          <pivot name="(Original)">
            <grid-processor name="mdStoredShape"/>
            <axes>
              <axis position="SLICERS">
                <attribute name="Result Namespace" mode="INCLUSIVE">
                  <selection value="$NAMESPACE$"/>
                </attribute>
                <attribute name="Date" mode="INCLUSIVE">
                  <selection value="$DATEFROM$"/>
                </attribute>
                <attribute name="Book" mode="INCLUSIVE">
                  <selection value="$BOOK_NAME$" type="Book Hierarchy"/>
                </attribute>
                <attribute name="Measure" mode="INCLUSIVE">
                  <exclude value="PV"/>
                </attribute>
                <attribute name="Risk Source System" mode="INCLUSIVE">
                  <selection value="gdsldn"/>
                </attribute>
                <attribute name="Is Error">
                  <selection value="false"/>
                </attribute>
              </axis>
              <axis position="DISCRIMINATOR">
                <attribute name="Book" mode="ALL"/>
                <attribute name="Book" mode="ALL"/>
                <attribute name="Measure" mode="ALL"/>
              </axis>
              <axis position="RESULT">
                <attribute name="SUM(Money Value In(GBP))"/>
                <attribute name="COUNT_DISTINCT(Book)"/>
              </axis>
            </axes>
          </pivot>
          <pivot name="(New)">
            <grid-processor name="mdStoredShape"/>
            <axes>
              <axis position="SLICERS">
                <attribute name="Result Namespace" mode="INCLUSIVE">
                  <selection ref="$NAMESPACE$"/>
                </attribute>
                <attribute name="Date" mode="INCLUSIVE">
                  <selection ref="$DATETO$"/>
                </attribute>
                <attribute name="Book" mode="INCLUSIVE">
                  <selection value="$BOOK_NAME$" type="Book Hierarchy"/>
                </attribute>
                <attribute name="Measure" mode="INCLUSIVE">
                  <exclude ref="PV"/>
                </attribute>
                <attribute name="Risk Source System" mode="INCLUSIVE">
                  <selection value="gdsldn"/>
                </attribute>
                <attribute name="Is Error">
                  <selection value="false"/>
                </attribute>
              </axis>
              <axis position="DISCRIMINATOR">
                <attribute name="Book" mode="ALL"/>
                <attribute name="Book" mode="ALL"/>
                <attribute name="Measure" mode="ALL"/>
              </axis>
              <axis position="RESULT">
                <attribute name="SUM(Money Value In(GBP))"/>
                <attribute name="COUNT_DISTINCT(Book)"/>
              </axis>
            </axes>
            <source name="risk"/>
          </pivot>
        </diff>   
    </immediate> 
</session>

但这只会取代第一个实例。我希望使用linq查询,然后循环并应用更改?

如果仅此而已,为什么不使用“xml”。替换(“oldavalue”、“newvalue”)?

我最终设法解决了这个问题-选择正确的属性,然后在元素上循环

var query=从Xdoc.subjects中的x开始(“选择”) 其中x.Attribute(“value”).value=“$BOOK\u NAME$” 选择x

        foreach (XElement xe in query)
        {
            xe.Attribute("value").Value = book;                
        }

我在Xdocument中没有这个方法?我的意思是将xml作为字符串使用,并使用string.Replace。不管怎样,你的错误在第一位。先换到哪里
        foreach (XElement xe in query)
        {
            xe.Attribute("value").Value = book;                
        }