Запросы к каналу LINQ to XML в VB.NET - PullRequest
1 голос
/ 09 марта 2011

У меня есть следующий XML, который я загружаю через XDocument.Load(uri) или XElement.Load(uri).У меня проблемы с получением коллекции <asset> элементов через LINQ.

Вот фрагмент XML-кода, который я пытаюсь запросить:

<assetCollection xmlns="tag:aisle7.net,2009:/api/1.0">
      <title>All Assets</title>
      <description>Collection containing all assets in the system</description>
      <resourcePath>/us/assets/~all</resourcePath>
      <link rel="self" href="http://web.aisle7.net/api/1.0/us/assets/~all?apikey=1234567890&amp;Format=XML" />
      <link rel="first" href="http://web.aisle7.net/api/1.0/us/assets/~all?apikey=1234567890&amp;Format=XML" />
      <link rel="next" href="http://web.aisle7.net/api/1.0/us/assets/~all?apikey=1234567890&amp;Format=XML&amp;page=2" />
      <link rel="last" href="http://web.aisle7.net/api/1.0/us/assets/~all?apikey=1234567890&amp;Format=XML&amp;page=66" />
      <updated>2011-03-01T19:01:49.667Z</updated>
      <assets>
        <asset>
          <title>Homeopathy</title>
          <resourcePath>/us/assets/toc/homeopathy</resourcePath>
          <link rel="alternate" href="http://web.aisle7.net/api/1.0/us/assets/toc/homeopathy?apikey=1234567890&amp;Format=XML" />
          <updated>2011-03-01T19:01:49.667Z</updated>
        </asset>
        <asset>
          <title>What Is Homeopathy?</title>
          <resourcePath>/us/assets/generic/what-is-homeopathy_13615_1</resourcePath>
          <link rel="alternate" href="http://web.aisle7.net/api/1.0/us/assets/generic/what-is-homeopathy_13615_1?apikey=1234567890&amp;Format=XML" />
          <updated>2011-03-01T19:00:17.680Z</updated>
        </asset>
    ...

А вот код, который япытаюсь использовать:

Dim uri As String = HttpUtility.UrlDecode(ConfigurationManager.AppSettings("Aisle7_Index_Url"))

Dim assets = (From a In XElement.Load(uri)
                               .Element("assets")
                               .Elements("asset")
             Select a)

For Each asset In assets
  Console.WriteLine(asset)
Next

Ответы [ 2 ]

2 голосов
/ 09 марта 2011

Попробуйте

Dim assets = From a In XElement.Load(uri).Descendants("asset") Select a

или

Dim assets = From a In XDocument.Load(uri).Root.Element("assets").Elements("asset") Select a
0 голосов
/ 10 марта 2011

Вот версия, использующая синтаксис xml:

Dim xml = XElement.Load(uri)
Dim q = From a In xml.<assets>...<asset> 
        Select a
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...