2013-03-19 2 views
1

Привет, у меня есть сценарий, в котором я хочу найти узел в XML-файле и определить тип файла.Выберите тип узла из документа XML

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

Я написал запрос, который возвращает мне коллегиальный узел. Но я просто хочу определить тип документа. Я хочу определить документ, содержит ли он {"Collegge","University","Company","Banking"} в одном запросе и возвращает только его тип.

+0

Что вы имеете в виду ** ** Тип документа? Можете ли вы принести образец xml? –

+0

Я имею в виду, что имя узла в документе может быть как {«Collegge», «University», «Company», «Banking»}. поэтому на основе этого хотелось бы найти, какой тип документа он есть. Любой тип коллегирования или тип компании или тип банковского дела и т. д. –

+0

По типу i означает, что я могу вернуть либо строку как тип, либо первый элемент xElement как значение. в Type.Based, что я буду выполнять операции над документом. –

ответ

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())); 

UPDATE: Если все элементы объявлены в одном пространстве имен, можно использовать следующий код, чтобы избежать обхода всех элементов из файлов

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

Спасибо, сэр, это работающее решение. Просто удалите проверку. :) –

+0

@lokendrajayaswal приветствую :) Извините, но я не могу дать вам лучшее решение, не видя xml (возможно, здесь можно избежать всех узлов) –

+0

@ lazyberezovsky :) Да, это прекрасно. Sir.Its это быстро, так как FirstOrDefault используется и возвращает значение, как только оно получает один в документе. –

Смежные вопросы