2009-12-10 6 views
0

Je soumets une commande à une session SSH et j'obtiens une réponse XML qui est variable en fonction du type de requête que j'exécute. Je reçois le type de XML suivant est retourné ...Comment énumérer un document XML variable dans .NET en utilisant Linq to XML

<CLIOutput> 
    <Results> 
    <ReturnCode>0</ReturnCode> 
    <EventCode>23000</EventCode> 
    <EventSummary>CLI command completed successfully.</EventSummary> 
    </Results> 
    <Data> 
    <Row> 
     <Client>kcllaptop</Client> 
     <Domain>/Top/Top</Domain> 
    </Row> 
    <Row> 
     <Client>testclient</Client> 
     <Domain>/Top/Top</Domain> 
    </Row> 
    </Data> 
</CLIOutput> 

Je puis dans un parser XDocument, et ce que je veux faire est Énumérer à travers les différentes <Row> attributs dans la section Données < >, étant donné qu'ils changent . Ils sont toujours dans la section DATA, mais les noms et les numéros des attributs changent. Je peux obtenir le spécifique dans l'exemple ci-dessus, mais je suis après une méthode plus générique.

je peux obtenir les specifcs par

_xDoc.Elements().<Data>.<Rows>(0).<Client>.ToValue 

mais les changements de nom <client>.

Quelle est la meilleure façon d'énumérer les lignes retournées dans l'élément.

Complète LInq newbie désolé.

Merci et Cheers, Al

+0

Désolé, la clarification - le nom des attributs des changements, et je ne pouvais pas ordinales compte de travailler. –

Répondre

0

La réponse par les œuvres de SLaks. Cependant, dans VB.NET, vous n'avez pas besoin de la méthode .Elements().

Cela va faire la même chose:

For Each row in _xDoc.<Data>.<Row> 
    Console.WriteLine(row.<Client>.Value) 
Next 
+0

Désolé - ce que je voulais dire, il pourrait ne pas être la prochaine fois, il pourrait être <Domaine>. J'ai fini par obtenir ce que je voulais travailler en C#, puis je l'ai converti en VB.Net - pas un développeur VB.Net, mais j'ai dû intégrer quelque chose dans une bibliothèque existante. –

+0

OK, je peux aider avec la syntaxe VB.NET si nécessaire. – CoderDennis

0

Je suppose que vous utilisez VB.Net.

Vous pouvez boucler sur la valeur de retour de la méthode Elements, comme ceci:

For Each client As XElement In _xDoc.Elements().<Data>.<Row> 
    'Do something 
Next 
+0

Devrait être. à la fin au lieu de. CoderDennis