Нужен запрос LINQ для чтения XML-файла, который возвращает список

#xml #linq

#xml #linq

Вопрос:

В этом XML-файле я должен получить все исходные библиотеки DLL в виде списка. Я пытаюсь с помощью приведенного ниже запроса.

Затемнить appManifest как String = New System.IO.StreamReader (Приложение.GetResourceStream(Новая система.Windows.Ресурсы.StreamResourceInfo (т.Е.Результат, ничего), Новый Uri («AppManifest.xaml», UriKind.Относительный)).Поток).ReadToEnd()

Затемнить deploymentRoot как XElement = XDocument.Синтаксический анализ (appManifest).Root **Затемнить части как список (из XElement) = (Из assemblyParts в _ deploymentRoot.Элементы().Elements() Выберите assemblyParts).ToList()**

но patrs содержит count.Это не список. Как я могу это сделать?

Ниже приведен XML-документ.

 <Deployment xmlns="http://schemas.microsoft.com/client/2007/deployment" 
            RuntimeVersion="4.0.50826.0">
    <Deployment.OutOfBrowserSettings>
        <OutOfBrowserSettings ShortName="WebPortalUI Application" 
                              EnableGPUAcceleration="False" 
                              ShowInstallMenuItem="True">
            <OutOfBrowserSettings.Blurb>
                WebPortalUI Application on your desktop; 
                at home, at work or on the go.
            </OutOfBrowserSettings.Blurb>
            <OutOfBrowserSettings.WindowSettings>
                <WindowSettings Title="WebPortalUI Application" 
                                Height="400" Width="928" />
            </OutOfBrowserSettings.WindowSettings>
            <OutOfBrowserSettings.Icons />
        </OutOfBrowserSettings>
    </Deployment.OutOfBrowserSettings>

    <Deployment.Parts>
        <AssemblyPart x:Name="WebPortalUI" 
                      Source="WebPortalUI.dll" />
        <AssemblyPart x:Name="System.ComponentModel.Composition"
                      Source="System.ComponentModel.Composition.dll" />
        <AssemblyPart x:Name="System.ComponentModel.Composition.Initialization"
                      Source="System.ComponentModel.Composition.Initialization.dll" />
        <AssemblyPart x:Name="System.ComponentModel.DataAnnotations"
                      Source="System.ComponentModel.DataAnnotations.dll" />
        <AssemblyPart x:Name="System.Windows.Controls.Data.Input"
                      Source="System.Windows.Controls.Data.Input.dll" />
        <AssemblyPart x:Name="System.Windows.Controls.Navigation"
                      Source="System.Windows.Controls.Navigation.dll" />
        <AssemblyPart x:Name="System.Xml.Linq" 
                      Source="System.Xml.Linq.dll" />
        <AssemblyPart x:Name="System.Xml.Serialization"
                      Source="System.Xml.Serialization.dll" />
        <AssemblyPart x:Name="Telerik.Windows.Controls"
                      Source="Telerik.Windows.Controls.dll" />
        <AssemblyPart x:Name="Telerik.Windows.Controls.Docking"
                      Source="Telerik.Windows.Controls.Docking.dll" />
        <AssemblyPart x:Name="Telerik.Windows.Controls.GridView"
                      Source="Telerik.Windows.Controls.GridView.dll" />
        <AssemblyPart x:Name="Telerik.Windows.Controls.Input"
                      Source="Telerik.Windows.Controls.Input.dll" />
        <AssemblyPart x:Name="Telerik.Windows.Controls.Navigation"
                      Source="Telerik.Windows.Controls.Navigation.dll" />
        <AssemblyPart x:Name="Telerik.Windows.Data" 
                      Source="Telerik.Windows.Data.dll" />
        <AssemblyPart x:Name="ViewModel" 
                      Source="ViewModel.dll" />
        <AssemblyPart x:Name="System.Windows.Data" 
                      Source="System.Windows.Data.dll" />
    </Deployment.Parts>

</Deployment>
  

Ответ №1:

вы пробовали использовать xpath вместо этого? запрос был бы примерно таким //AssemblyPart/[Источник]

XPath общие сведения:http://www.w3schools.com/xpath/default.asp

XPath amp; .Net: http://www.developer.com/net/net/article.php/3383961/NET-and-XML-XPath-Queries.htm

приветствую

Ответ №2:

Ответ, использующий LINQ, находится по адресу: http://forums.asp.net/t/1681678.aspx/1

копирование оттуда:

 Dim assemblySources  = From aPart In XDocument.Load().Descendants("AssemblyPart") select a.Attribute("Source").Value  
For Each item As string In assemblySources 
  Console.WriteLine(item)  
Next
  

Комментарии:

1. Хорошо, но напишите краткое резюме об этом фрагменте кода здесь.