2017-09-11 3 views
1

Je ne vois pas d'explication pour l'utilisation des accolades dans: https://msdn.microsoft.com/en-us/library/bb353813(v=vs.110).aspxPasser aux accolades avec valeur à XContainer.Descendants() fait quoi?

J'ai remarqué dans un examen: feed.Descendants("{urn:CFI}Flight").Concat(feed.Descendants(Flight));

xml il fait référence à été:

<AirlineFeed> 
<Flight xmlns:"urn:cfi" name:"AS515"> 
    <Seats>123</Seats> 
</Flight> 

<Flightname:"UN24"> 
    <Seats>96</Seats> 
</Flight> 
</AirLineFeed> 

Qu'est-ce que la support bouclé faire? Merci.

Répondre

1

partir de la page que vous avez lié: https://msdn.microsoft.com/en-us/library/bb353813(v=vs.110).aspx

La méthode XContainer.Descendants() prend un paramater XName de type System.Xml.Linq.XName.

Si vous regardez la page msdn pour System.Xml.Linq.XName: https://msdn.microsoft.com/en-us/library/system.xml.linq.xname(v=vs.110).aspx

Vous pouvez voir Remarques:

noms XML comprennent un espace de noms et un nom local. Un nom complet est la combinaison de l'espace de noms et du nom local.

et de L'utilisation de noms étendus

Vous pouvez également créer un XName à partir d'un nom XML développé sous la forme {namespace} LocalName

+0

donc du code, suis-je efficacement demander à tous les éléments de vol qui ont un xmlns avec une valeur de "urn: cfi"? – MilesMorales

+0

L'espace de noms défini par 'xmlns' dans votre exemple est' urn: cfi'. Vous pouvez voir à partir de la documentation 'XContainer.Descendants()' la méthode retourne un 'IEnumerable' qui contient la méthode' concat() 'qui concatène deux séquences voir: [https://msdn.microsoft.com/fr-fr/ library/9eekhta0 (v = vs.110) .aspx] (https://msdn.microsoft.com/en-us/library/9eekhta0 (v = vs.110) .aspx). Comme il s'agissait d'une question d'examen, j'essaie d'éviter de fournir simplement la sortie des appels de fonction pour que vous puissiez vous rendre à la réponse vous-même. – Nelson

+1

C'est ce que fait le premier appel, vous avez raison. – Nelson