2013-03-19 2 views
1

Bonjour, j'ai un scénario dans lequel je souhaite rechercher le noeud dans un fichier XML et identifier le type de fichier.Sélection du type de noeud A partir du document XML

XDocument xDococumnetObj = XDocument.Load(filePath); 
XElement presentationElement= 
     xDococumnetObj.Descendants() 
        .Where(x => x.Name.LocalName.Equals("collegge")) 
        .FirstOrDefault(); 

J'ai une requête écrite qui me renvoie un noeud collegge. Mais je veux juste identifier le type de document. Je veux identifier le document s'il contient {"Collegge","University","Company","Banking"} dans une seule requête et retourner son type seulement.

+0

Que voulez-vous dire par ** type ** de document? Pouvez-vous apporter un échantillon de xml? –

+0

Je veux dire que le nom de noeud dans le document peut être {"Collegge", "University", "Company", "Banking"}. Donc, basé sur ce qui voudrait trouver quel type de document c'est.Type collegge ou type de société ou type de banque etc –

+0

Par type je veux dire que je peux retourner une chaîne comme type ou premier xElement comme valeur. dans Type.Based sur que je vais effectuer des opérations sur le document. –

Répondre

1
string[] docTypes = {"Collegge", "University", "Company", "Banking"}; 
XDocument xdoc = XDocument.Load(filePath); 
var docType = docTypes.FirstOrDefault(type => 
       xdoc.Descendants().Any(n => n.Name.LocalName == type.ToLower())); 

MISE À JOUR: Si tous les éléments déclarés dans la même espace de noms, vous pouvez utiliser le code ci-dessous pour éviter de traverser tous les éléments de fichiers

string[] docTypes = {"Collegge", "University", "Company", "Banking"}; 
XDocument xdoc = XDocument.Load(filePath); 
XNamespace ns = "http://www.foo.org/2013/bar"; 
var docType = docTypes.FirstOrDefault(type => xdoc.Descendants(ns + type).Any()); 
+1

Merci monsieur cela fonctionne solution.Juste retiré tolower vérifier. :) –

+0

@lokendrajayaswal bienvenue :) désolé, mais je ne peux pas vous donner une meilleure solution sans voir xml (éventuellement vérifier tous les nœuds peuvent être évités ici) –

+0

@ lazyberezovsky :) Ouais c'est parfaitement bien monsieur.Il est rapide depuis FirstOrDefault est utilisé et renvoie la valeur dès qu'elle en obtient une dans le document. –

Questions connexes