C# Xdocument修改所有匹配的属性
这让我发疯,我已经试了两天了 我基本上希望根据名称替换值 我有如下xml: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>
<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;
}