Я пытаюсь проанализировать вывод XML из веб-службы REST, и мне было указано, как использовать Linq2Xml для запроса XML-данных об атрибутах, которые мне нужны. Вывод XML выглядит следующим образом:
<?xml version="1.0" encoding="UTF-8"standalone="yes" ?>
<Response Status="OK">
<Item Name="NumberZones">2</Item>
<Item Name="CurrentZoneID">10001</Item>
<Item Name="CurrentZoneIndex">1</Item>
<Item Name="ZoneName0">Westralia</Item>
<Item Name="ZoneID0">0</Item>
<Item Name="ZoneGUID0">{81C56183-31DA-45C2-90C3-81609F01B38B}</Item>
<Item Name="ZoneName1">Lounge</Item>
<Item Name="ZoneID1">10001</Item>
<Item Name="ZoneGUID1">{eac0109e-0090-a992-7fba-dc67fe29e6e7}</Item>
</Response>
Я хочу вернуть в таблицу данных ZoneID, ZoneName и ZoneGUID, я хочу, чтобы функция возвращала что-то вроде:
id name guid
0 westralia {81C56183-31DA-45C2-90C3-81609F01B38B}
10001 lounge {eac0109e-0090-a992-7fba-dc67fe29e6e7}
Я работал над следующей функцией, чтобы запросить XML, и дошел до попытки вернуть результаты (даже не пытаясь манипулировать данными, чтобы получить их в желаемом формате).
Private Function getServerResponse_Linq(ByVal queryString As Uri) As DataTable
Dim dt As DataTable = New DataTable("data")
With dt
.Columns.Add("name")
.Columns.Add("Value")
End With
Dim loaded As XDocument = XDocument.Load(queryString.ToString)
Dim dr As DataRow
Dim query = From c In loaded.<Response> Select c
For Each result In query
dr = dt.NewRow
With dr
.Item("name") = result.@name
.Item("value") = result.Value
End With
Next
Return dt
End Function
Возвращаемая таблица данных пуста, я подтвердил, что результат имеет назначенный XML, и result.value является строковой версией файла XML (200Westralia0 {81C56183-31DA-45C2-90C3-81609F01B38B} Lounge10001 {eac0109e-0090 -a992-7fba-dc67fe29e6e7})
Может ли кто-нибудь оказать помощь в том, как я могу прочитать из примера REST XML над именем (ZoneName%) и значением атрибута (Westralia and Lounge)?