Извините, если этот вопрос очень простой, но я не очень много работал с XML, и я впервые работаю с LINQ to XML ...
У меня есть структурированная карта сайта XMLкак дерево каталогов:
<Site>
<File GUID="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx">FileName</file>
<Folder name="FolderName">
<Security>
<Role>Admin</role>
</Security>
<File GUID="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx">FileName</file>
<Folder name="subFoler">
<File GUID="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx">FileName</file>
<File GUID="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx">FileName</file>
<Folder>
<File GUID="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx">FileName</file>
</Folder>
</Folder>
</Folder>
</Site>
Таким образом, каждый файл будет наследовать защиту от своей родительской папки (или папки деда и т. д., в зависимости от того, как далеко от дерева находится <security></security>
.
Я хочу иметь возможность, учитывая GUID файла, выбрать этот файл с помощью LINQ и собрать все роли, связанные с безопасностью, которую унаследовал файл.
Это то, что я имею до сих пор, но это очень грубая попытка, и она не завершена:
XDocument sitemap = XDocument.Load(@"\sitemap.xml");
XElement currentFile = new XElement("File",
from file in sitemap.Elements("File")
where file.Element("GUID").Equals(guid)
select file.Parent.Element("security").Elements("role"));
ps. Файл sitemap находится в том же каталоге, что и класс, в котором написан этот код