【问题标题】:Xdocument amend all attributes that matchXdocument 修改所有匹配的属性
【发布时间】:2012-07-25 11:24:42
【问题描述】:

这让我发疯了,我已经尝试了 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 查询然后循环并应用更改?

【问题讨论】:

    标签: c# linq linq-to-xml


    【解决方案1】:

    如果就是这样,你为什么不使用 "xml".replace("oldavalue", "newvalue")?

    【讨论】:

    • 我在 Xdocument 中没有那个方法?
    • 我的意思是使用 xml 作为字符串并使用 string.Replace。无论如何,你的错误是第一个。首先更改到位置
    【解决方案2】:

    我最终设法解决了问题 - 选择正确的属性然后循环遍历元素..

    var query = from x in Xdoc.Descendants("selection") 其中 x.Attribute("value").Value == "$BOOK_NAME$" 选择 x;

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

    【讨论】:

      猜你喜欢
      • 2021-12-04
      • 1970-01-01
      • 2011-12-22
      • 2011-09-09
      • 2011-10-09
      • 1970-01-01
      • 1970-01-01
      • 2019-11-09
      • 1970-01-01
      相关资源
      最近更新 更多