0

xml タグの既存の要素を新しい要素に置き換えたいと思います。サンプル XML は次のとおりです。

<Dr.Watson>
<Bugs>
  <Bug Name="Bug.add --> AAAAAAAAAAAA">
    <criteria>
      <includeFilterSets>
        <filterSet>
          <filter>
            <filterName>PRODUCT_NAME</filterName>
            <operator>
              <name>Equals</name>
            </operator>
            <value>Dr.Watson</value>
          </filter>
        </filterSet>
      </includeFilterSets>
      <grouping>
        <groupBy>
          <name>STATUS</name>
        </groupBy>
      </grouping>
      <caseSensitive>false</caseSensitive>
      <entityToSearch>
        <name>BUG</name>
      </entityToSearch>
    </criteria>
  </Bug>
  </Bugs>
  </Dr.Watson>

これまでのコード:

XmlDocument doc = new XmlDocument();
doc.LoadXml(FilePath_EXPRESS_API_InputFile);
XmlNodeList nodelist = doc.SelectNodes("/Dr.Watson/Bugs/Bug");


//create node and add value
//Console.WriteLine(mxpwr.Value);
XmlNode node = doc.CreateNode(XmlNodeType.Element, "grouping", null);
XmlNode node11 = doc.CreateNode(XmlNodeType.Element, "groupBy", null);
XmlNode node12 = doc.CreateNode(XmlNodeType.Element, "name", null);

//Create Title Node
XmlNode Test_11 = doc.CreateElement("grouping");
XmlNode Test_22 = doc.CreateElement("groupBy");
XmlNode Test_44 = doc.CreateElement("name");

//add value for it
Test_11.InnerText = ("");
Test_22.InnerText = ("");
Test_44.InnerText = ("");

//create Url node
//XmlNode Test_445 = doc.CreateElement("sai");
Test_44.InnerText = ("STATE");

//add to parent node
Test_11.AppendChild(Test_22);
Test_22.AppendChild(Test_44);

//add to elements collection
doc.DocumentElement.AppendChild(Test_11);
Test_11.AppendChild(Test_22);
Test_22.AppendChild(Test_44);

私はXMLシナリオのC#を初めて使用するので、提案して助けてください。ありがとうございます。また、これらの編集を保存したくないので、編集したXMLランタイムをAPIの実行に使用したいことに注意してください。

4

1 に答える 1

0

XmlDocumentXML-DOM API ( et al)を介してノードを置き換えるには:

  1. 置換するノードの親要素を表すXmlNode(またはサブクラス)のインスタンスを取得します。parent
  2. parent.RemoveChild古いノードを削除するために使用します。
  3. parent.AppendChild新しいノードを追加するために使用します。

(#3 の代わりに、parent.InsertAfterorparent.InsertBeforeと別の子への参照を使用して、新しいノードを他の既存の子の間に配置します。)

質問のコードは、新しい XML ドキュメントをゼロから構築しているように見えます。なぜノードを置き換えたいのでしょうか。最初に正しいものを作成するだけです。既存の XML ドキュメントを変更するには、静的XmlDocument.Loadメソッドの 1 つを使用して既存のドキュメントをロードおよび解析し、さまざまな検索およびナビゲーション メソッドを使用して上記の #1 の参照を取得し、上記の手順を適用して、最後に通常どおりに保存します。

于 2013-09-10T08:58:49.090 に答える