LinqtoXML:値が別のコレクションにないノードを削除する方法

ティム

ユーザーノードのリストを含むノードと、ユーザーのリストを含むグループを含むノードを含むxmlドキュメントがあります。groupsコレクションに一致するdnがないusersコレクションからすべてのノードを削除したいと思います。

以下の簡略化された構造の例として、すべてのdeleteme、ユーザーノードを削除しようとしています。

<?xml version="1.0" encoding="utf-8"?>
<syncdata >
  <users >
    <user>
      <dn>deleteme1</dn>      
    </user>
    <user>
      <dn>deleteme2</dn>      
    </user>
    <user>
      <dn>deleteme3</dn>      
    </user>
    <user>
      <dn>JohnSmith</dn>      
    </user> 
  </users>
  <groups>
  <group name="group2">     
      <users>
        <user>
          <dn>JohnSmith</dn>
        </user>
      </users>
    </group>
    <group name="group1">      
      <users>
        <user>
          <dn>JohnDoe</dn>
        </user>
        <user>
          <dn>JohnnyMorris</dn>
        </user>        
      </users>
    </group>
</groups>
  </syncdata>  

以下のコードは、syncdata / usersコレクション内のすべてのアイテムを削除します。SQLと同様のことを行う必要があります。

System.Xml.Linq.XDocument xdoc
 xdoc.Descendants("users").Where(F => F.Parent.Name == "syncdata").Descendants("user").Where(u => u.Parent.Name == "users").Remove();

これは可能ですか?

ポンド
var xDoc = XDocument.Load(fname);

HashSet<string> set = new HashSet<string>(xDoc.Root.Element("groups")
                                              .Descendants("dn")
                                              .Select(dn => (string)dn));

foreach (var user in xDoc.Root.Element("users").Elements("user").ToList())
{
    if(!set.Contains(user.Element("dn").Value))
        user.Remove();
}

var newXml = xDoc.ToString();

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

あるコレクションから別のコレクションに値を取得して追加する方法..マングース、ノードJS

分類Dev

別のコレクションにある値に基づいて、コレクションからドキュメントを削除します

分類Dev

別のコレクションドキュメントIDからコレクション値を取得する方法が参照されているFirestore

分類Dev

ノードJSを介して作成するときに、MongoDBがコレクションを表示しない

分類Dev

ストーリーボードの警告を削除する方法:サポートされていない構成プロトタイプコレクションビューセルには再利用識別子が必要です

分類Dev

リレーションが削除されていない場合にのみ、リレーションを含むレコードを返す方法

分類Dev

異なるノードを異なるArangoコレクションに含める必要がありますか?

分類Dev

別のコレクション値に基づいて1つのコレクションを更新する

分類Dev

.map()の値をFirebaseの別のコレクションに適用する方法

分類Dev

LoDash-共通キーを介して1つのコレクション値を別のコレクション値にプッシュする方法

分類Dev

Mongo コレクションの特定のフィールドに特定の値が含まれている場合にのみ関数を実行する方法は?

分類Dev

ノード/マングースアプリケーションの別のコレクションに挿入する方法

分類Dev

あるdstoreコレクションにはあるが別のコレクションにはないアイテムを見つける方法は?

分類Dev

一致するパターンが異なる同じノードタイプのノードを1つの列またはコレクションに結合するにはどうすればよいですか?

分類Dev

Laravelの雄弁な方法で、コレクションのコレクションから個別の配列で関係をロードして取得する方法

分類Dev

コレクションが存在しない場合にのみMongoDBがレコードを挿入するのが遅いのはなぜですか?

分類Dev

あるコレクションから別のコレクションに1つのフィールドを参照しています。しかし、重複がある場合は常に、返される配列は異なります

分類Dev

mongodbの別の配列フィールドの値に基づいてコレクションに配列フィールドを追加する

分類Dev

mongodbの別の配列フィールドの値に基づいてコレクションに配列フィールドを追加する

分類Dev

マングース:別のコレクションの値に基づいてコレクションをフィルタリングする

分類Dev

Mongooseを使用して、ノードからMongoDBの複雑な埋め込みコレクションに挿入、更新、および削除する

分類Dev

別のノードからリレーションをコピーする

分類Dev

@IntDefアノテーションと、アノテーションを付けることができない他のコードからの戻り値、またはアノテーションを一時的に無効にしてコードに影響を与える方法

分類Dev

Laravelコレクション-コレクションに値が含まれている場合にのみ値をエコーする

分類Dev

コレクション内の接続されていないデータを削除する方法(mongoDB)

分類Dev

別のコレクションの値に基づいてコレクションを更新するためのAzureCosmosDBトリガー

分類Dev

ガベージコレクションできない未使用の@ViewScopedBeanを(セッション中に)検出して削除する方法

分類Dev

コレクションを反復しながら、コレクションから他の要素を安全に削除する方法

分類Dev

ActiveRecordコレクションにレコードがあるかどうかを確認する正しい方法

Related 関連記事

  1. 1

    あるコレクションから別のコレクションに値を取得して追加する方法..マングース、ノードJS

  2. 2

    別のコレクションにある値に基づいて、コレクションからドキュメントを削除します

  3. 3

    別のコレクションドキュメントIDからコレクション値を取得する方法が参照されているFirestore

  4. 4

    ノードJSを介して作成するときに、MongoDBがコレクションを表示しない

  5. 5

    ストーリーボードの警告を削除する方法:サポートされていない構成プロトタイプコレクションビューセルには再利用識別子が必要です

  6. 6

    リレーションが削除されていない場合にのみ、リレーションを含むレコードを返す方法

  7. 7

    異なるノードを異なるArangoコレクションに含める必要がありますか?

  8. 8

    別のコレクション値に基づいて1つのコレクションを更新する

  9. 9

    .map()の値をFirebaseの別のコレクションに適用する方法

  10. 10

    LoDash-共通キーを介して1つのコレクション値を別のコレクション値にプッシュする方法

  11. 11

    Mongo コレクションの特定のフィールドに特定の値が含まれている場合にのみ関数を実行する方法は?

  12. 12

    ノード/マングースアプリケーションの別のコレクションに挿入する方法

  13. 13

    あるdstoreコレクションにはあるが別のコレクションにはないアイテムを見つける方法は?

  14. 14

    一致するパターンが異なる同じノードタイプのノードを1つの列またはコレクションに結合するにはどうすればよいですか?

  15. 15

    Laravelの雄弁な方法で、コレクションのコレクションから個別の配列で関係をロードして取得する方法

  16. 16

    コレクションが存在しない場合にのみMongoDBがレコードを挿入するのが遅いのはなぜですか?

  17. 17

    あるコレクションから別のコレクションに1つのフィールドを参照しています。しかし、重複がある場合は常に、返される配列は異なります

  18. 18

    mongodbの別の配列フィールドの値に基づいてコレクションに配列フィールドを追加する

  19. 19

    mongodbの別の配列フィールドの値に基づいてコレクションに配列フィールドを追加する

  20. 20

    マングース:別のコレクションの値に基づいてコレクションをフィルタリングする

  21. 21

    Mongooseを使用して、ノードからMongoDBの複雑な埋め込みコレクションに挿入、更新、および削除する

  22. 22

    別のノードからリレーションをコピーする

  23. 23

    @IntDefアノテーションと、アノテーションを付けることができない他のコードからの戻り値、またはアノテーションを一時的に無効にしてコードに影響を与える方法

  24. 24

    Laravelコレクション-コレクションに値が含まれている場合にのみ値をエコーする

  25. 25

    コレクション内の接続されていないデータを削除する方法(mongoDB)

  26. 26

    別のコレクションの値に基づいてコレクションを更新するためのAzureCosmosDBトリガー

  27. 27

    ガベージコレクションできない未使用の@ViewScopedBeanを(セッション中に)検出して削除する方法

  28. 28

    コレクションを反復しながら、コレクションから他の要素を安全に削除する方法

  29. 29

    ActiveRecordコレクションにレコードがあるかどうかを確認する正しい方法

ホットタグ

アーカイブ