条件に基づいてXmlNodeを削除する必要があります。どうやってするの?XmlNodeListからXmlNodeを削除する方法
答えて
イテレータ(foreach-statement)を使用してノードを簡単に削除することはできません。 私は次のことを行うことができます:
1)foreach-loopで、削除する必要があるすべての要素のリストを保存します。次に、これらの要素だけをループして削除します。
2)通常のfor-loopを使用して、1つのアイテムを削除した後で次にアクセスする要素を追跡します。
編集:forループを使用するときは、Fredrikが示唆するように、後方にループします。
最初の回答のアップ・アップ。パート2は、それを記述する方法が少し複雑に聞こえますが、逆順でリストを反復する方が簡単なので、次のインデックスについて心配する必要はありません。 – overslacked
ノードが正しい順序であればforループがどのように実装されるのか分からなかったので、「..keepトラックは次の要素です...」という理由が追加されました。 –
XML DOMからノードを削除しようとしている場合、これは正しい方法ではありません。 XMLNodeList
は単なるノードのリストです。親ノードからノードを削除します。このように:
XmlNode parentNode = // some value
XmlNode drawNode = // some value
parentNode.ParentNode.RemoveChild(drawNode);
AFIK 、XmlNode "RemoveNode"はC#では存在しません。 –
実際、少なくとも4.0で。私は彼が意味だと思う: drawNode.ParentNode.RemoveChild(drawNode); これはちょっと醜いですが、私は "削除"機能を期待しています:drawNodeとその中の何かを押します。 – philw
@philw - 私はあなたが正しいと信じています。私はそれに応じて回答を編集しました –
これはあなたのためにトリックを行う必要があります。
for (int i = nodeList.Count - 1; i >= 0; i--)
{
nodeList[i].ParentNode.RemoveChild(nodeList[i]);
}
あなたであればループを通常のforループ、ループを使用して、あなたが行くように、それは「後方」あなたがアイテムを削除することができます上。
アップデート:ここではそれらを削除し、ファイルを保存し、ノードを見つけ、xmlファイルを読み込むなど、完全な例です:
XmlDocument doc = new XmlDocument();
doc.Load(fileName);
XmlNodeList nodes = doc.SelectNodes("some-xpath-query");
for (int i = nodes.Count - 1; i >= 0; i--)
{
nodes[i].ParentNode.RemoveChild(nodes[i]);
}
doc.Save(fileName);
は、次の少し単純ではありません。
XmlDocument doc = new XmlDocument();
doc.Load(fileName);
XmlNodeList nodes = doc.SelectNodes("some-xpath-query");
while (nodes.FirstChild != null) {
nodes.RemoveChild(nodes.FirstChild);
}
doc.Save(fileName);
XmlNodeList xnodeContact = xmldocContact.GetElementsByTagName("contact");
foreach (ListViewItem item in listViewContacts.Items)
{
if (item.Checked)
{
if (item.Index >= 0)
xnodeContact[0].ParentNode.RemoveChild(xnodeContact[0]);
listViewContacts.Items.Remove(item);
}
}
}
xmldocContact.Save(appdataPath + "\\WhatAppcontactList.xml");
Invalidate();
- 1. XmlNodeからテキストを削除するには?
- 2. xmlnodeListをxmlNodeとxmlelementにコピーするには
- 3. XmlElementを削除するには? (XmlNodeとXmlElement)
- 4. DataGridviewから削除中にテキストファイルからコンテンツを削除する方法
- 5. は、これらのノードからのリンクを取得する方法いるXmlNodeList
- 6. 別の方法からビューを削除する方法
- 7. 削除キーを使用してDataGridから行を削除する方法
- 8. 削除されたプロジェクトをTFSソース管理から削除する方法
- 9. データベースからの削除方法
- 10. XMLNodeListまたはコンボボックスでノードの複数の出現を削除する
- 11. UITableViewからカスタムセルを削除する方法は何ですか?
- 12. 関連する子テーブルから行を削除する方法
- 13. MFCキャプションバーから閉じるボタンを削除する方法
- 14. libxml2:xmlNodeからのxpath
- 15. すべてのウィジェットからGtkテーブルを削除する方法
- 16. QGraphicsSceneからすべてのQGraphicsItemを削除する方法
- 17. Androidをリストビューから削除してから削除する
- 18. drupalのビューからノードを削除する方法6
- 19. 文字列からNULL文字を削除する方法
- 20. int [] []から重複を削除する方法
- 21. プロジェクトルートからVSMacros80フォルダを削除する方法は?
- 22. gemリモートソースからリモートソースを削除する方法
- 23. XmlDocumentから空白を削除する方法
- 24. フォームからタイトルバーを削除する方法
- 25. Androidのシステムアプリケーションから他のアプリケーションを削除する方法
- 26. GHCiの "target list"からモジュールを削除する方法
- 27. Fortran:文字からファイル拡張子を削除する方法
- 28. openshiftデータディレクトリからディレクトリを削除する方法は?
- 29. jQueryアラートダイアログから「OK」ボタンを削除する方法
- 30. 配列から特定の要素を削除する方法
何が問題なのですか? –