2010-09-06 6 views
1

J'ai un fichier XML dans le format ci-dessous et j'ai besoin d'obtenir l'identifiant et le nom de tous les SubEntity lorsque je passe le ParentEntityId. Cela doit être fait dans Silverlight.comment obtenir childnodes si je passe l'id de nœud parent au xml dans silverlight?

<Treeview> 
    <ParentEntity ParentEntityId="1" ParentEntityName="P1"> 
     <Facility FacilityId="F1" FacilityName="F1"> 
      <Category CategoryId="C1" CategoryName="C1"/>    
      <Category CategoryId="C2" CategoryName="C2" > 
       <Activity ActivityId="A1" ActivityName="A1" /> 
      </Category> 
     </Facility> 
     <Facility FacilityId="F2" FacilityName="F2"> 
      <Category CategoryId="C1" CategoryName="C1"> 
       <Activity ActivityId="A2" ActivityName="A2" /> 
       <Activity ActivityId="A3" ActivityName="A3" /> 
      </Category> 
     </Facility> 
     <SubEntity SubEntityId="S1" SubEntityName="S1"> 
      <SubEntity SubEntityId="S2" SubEntityName="S2"/> 
     </SubEntity> 
     <SubEntity SubEntityId="S3" SubEntityName="S3"> 
      <SubEntity SubEntityId="S4" SubEntityName="S4"> 
       <Facility FacilityId="F3" FacilityName="F3"> 
        <Category CategoryId="C1" CategoryName="C1 > 
         <Activity ActivityId="A1" ActivityName="A1" /> 
        </Category> 
       </Facility> 
      </SubEntity> 
      <SubEntity SubEntityId="S5" SubEntityName="S5"> 
       <Facility FacilityId="F5" FacilityName="F5"> 
        <Category CategoryId="C1" CategoryName="C1" /> 
        <Category CategoryId="C2" CategoryName="C2"/>     
       </Facility> 
      </SubEntity> 
      <SubEntity SubEntityId="S6" SubEntityName="S6" /> 
     </SubEntity> 
    </ParentEntity> 
    <ParentEntity ParentEntityId="2" ParentEntityName="P2"> 
     <Facility FacilityId="F1" FacilityName="F1"> 
      <Category CategoryId="C1" CategoryName="C1"/>     
     </Facility> 
     <SubEntity SubEntityId="S7" SubEntityName="S7" /> 
    </ParentEntity> 
</Treeview> 

En supposant que je passe mon parentEntityId = 1, j'ai besoin de la sortie S1, S2, S3, S4, S5, S6.

Merci à l'avance, Sunitha

Répondre

0

Utilisation LINQ to XML

foreach(XElement subEntity in doc.Root.Elements("ParentEntity") 
     .First(elem => elem.Attribute("ParentEntityID").Value == "1") 
     .Descendents("SubEntity")) 
    { 
    // Do stuff with each SubEntity e.g.:- 
    string name = subEntity.Attribute("SubEntityName"); 
    } 

Une alternative si vous utilisez Silverlight 4 serait d'utiliser XPath à la place. Vous devrez ajouter le System.Xml.XPath.dll à vos références. Dans ce cas, la boucle au-dessus devient: -

foreach(XElement subEntity in doc.Root 
     .XPathSelectElements("ParentEntity[ParentEntityId='1']//SubEntity") 
    { 
    // Do stuff with each SubEntity e.g.:- 
    string name = subEntity.Attribute("SubEntityName"); 
    } 

BTW, vous n'êtes pas dans votre préfixe XML réel tous vos attributs nom avec le nom de l'élément qu'ils placés dans-vous? Par exemple, pourquoi "SubEntityName" et pas simplement "Nom"?

+0

Merci beaucoup Anthony. Cela fonctionne pour moi !! Et mon xml n'a pas d'attribut "SubEntityName". C'est juste "Nom". :) – Sunitha

Questions connexes