这让我很生气,我已经尝试了2天了。
我基本上想要根据名称替换值。
我有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>
我希望用实际值替换所有$ NAMESPACE $值。
有人可以帮忙吗?
了解我正在使用的其他信息
XElement xeNS = Xdoc.Descendants("selection").First(el => (String)el.Attribute("value").Value == "$NAMESPACE$");
xeNS.SetAttributeValue("value", ns);
但这只取代了第一个实例。我希望linq查询然后循环并应用更改?
答案 0 :(得分:1)
如果这就是全部,为什么不使用“xml”.replace(“oldavalue”,“newvalue”)?
答案 1 :(得分:0)
我设法最终解决了这个问题 - 选择正确的属性然后循环遍历元素..
var query =来自x中的Xdoc.Descendants(“selection”) 其中x.Attribute(“value”)。Value ==“$ BOOK_NAME $” 选择x;
foreach (XElement xe in query) { xe.Attribute("value").Value = book; }