2010-09-10 4 views
1

J'essaie d'utiliser Linq XML pour sélectionner un nombre de nœuds et les enfants mais devenir terriblement confus! Dans l'exemple XML ci-dessous, j'ai besoin de retirer tous les <MostWanted> et tous les Wanted avec leurs nœuds enfants mais sans les autres nœuds entre les nœuds Mostwanted et Wanted.C# Linq XML retirer des noeuds à partir du document

Cela parce que chaque Mostwanted peut être suivi par n'importe quel nombre de Wanted et le Wanted se rapportent au Mostwanted précédent. Je suis même en train de me tromper en tapant ceci !!!

Comment puis-je faire cela en C# ??

<root> 
    <top> 
    <NotWanted3> 
    </NotWanted3> 
    <MostWanted> 
     <UniqueKey>1</UniqueKey> 
     <QuoteNum>1</QuoteNum> 
    </MostWanted> 
    <NotWanted2> 
     <UniqueKey>1</UniqueKey> 
     <QuoteNum>1</QuoteNum> 
    </NotWanted2> 
    <NotWanted1> 
     <UniqueKey>0001</UniqueKey> 
    </NotWanted1> 
    <Wanted> 
     <Seg> 
     <SegNum>1</SegNum> 
     </Seg> 
    </Wanted> 
    <Wanted> 
     <Seg> 
     <SegNum>2</SegNum> 
     </Seg> 
    </Wanted> 
    <NotWanted> 
     <V>x</V> 
    </NotWanted> 
    <NotWanted3> 
    </NotWanted3> 
    <MostWanted> 
     <UniqueKey>1</UniqueKey> 
     <QuoteNum>1</QuoteNum> 
    </MostWanted> 
    <NotWanted2> 
     <UniqueKey>1</UniqueKey> 
     <QuoteNum>1</QuoteNum> 
    </NotWanted2> 
    <NotWanted1> 
     <UniqueKey>0002</UniqueKey> 
    </NotWanted1> 
    <Wanted> 
     <Seg> 
     <SegNum>3</SegNum> 
     </Seg> 
    </Wanted> 
    <Wanted> 
     <Seg> 
     <SegNum>4</SegNum> 
     </Seg> 
    </Wanted> 
    <NotWanted> 
     <V>x</V> 
    </NotWanted> 
    </top> 
</root> 

Répondre

1

Pourquoi ne pas utiliser simplement:

XName wanted = "Wanted"; 
XName mostWanted = "MostWanted"; 
var nodes = doc.Descendants() 
       .Where(x => x.Name == wanted || x.Name == mostWanted); 

Cela permet de récupérer tous les éléments appelés "Wanted" ou "MostWanted". À partir de chacun de ces éléments, vous pouvez accéder aux éléments enfants, etc.

Si ce n'est pas ce que vous cherchez, veuillez clarifier votre question.

+0

Merci Jon c'est génial! – Adrian

+0

Je suis nouveau à ce que je suis sûr que vous pouvez dire! – Adrian

+0

pourriez-vous expliquer comment cela fonctionne "=>"? – Adrian

Questions connexes