1

XElementのReplaceAll関数を使用しています。私は私が取り替えなければならない次の画像要素を持っています:

<image x="773.35399" y="1175.40315" .... />

上記の要素を次の要素に置き換えると:

<image x="23" y="11" .../>

ReplaceAll関数の呼び出し後に追加の要素が作成され、置き換えられた要素がその中にラップされます。上記の交換結果は次のようになります。

  <image>
    <image x="23" y="11" .../>
  </image>

置き換えられた要素を余分な要素の中にラップしたくありません。この動作を停止するにはどうすればよいですか?

4

2 に答える 2

1

「画像」ノード自体でReplaceAllを呼び出しているほとんどのリクレイは、そのすべての子ノードを新しいコンテンツに置き換えます。あなたの場合、「子ノードを置き換える」(呼び出し前にはなかった)は、表示されているとおりに新しい「画像」ノードを子として追加するだけです。

代わりにXElement.ReplaceWithが必要になる可能性があります。

于 2013-01-04T07:03:14.713 に答える
1

ReplaceWithの代わりにメソッドを使用してくださいReplaceAll。後者は、要素自体を置き換えるのではなく、子ノードと要素の属性を置き換えます。

XDocument xdoc = XDocument.Load(path_to_xml);
xdoc.Root.Element("image")
         .ReplaceWith(new XElement("image", 
              new XAttribute("x", 23),
              new XAttribute("y", 11)));

xdoc.Save(path_to_xml);
于 2013-01-04T06:57:48.633 に答える