0

これは私を怒らせています。私はこれを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クエリを望んでいたので、ループして変更を適用しましたか?

4

2 に答える 2

1

それだけなら、"xml".replace("oldavalue", "newvalue") を使用しませんか?

于 2012-07-25T11:41:32.847 に答える
0

私は最終的にそれを解決することができました-正しい属性を選択してから、要素をループします..

var query = from x in Xdoc.Descendants("selection") where x.Attribute("value").Value == "$BOOK_NAME$" select x;

        foreach (XElement xe in query)
        {
            xe.Attribute("value").Value = book;                
        }
于 2012-07-25T12:15:19.333 に答える