Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - .NET

Страница: 1 |

 

  Вопрос: linq to xml, XElement Добавлено: 14.11.09 18:29  

Автор вопроса:  tihu
Имеется xml-файл с следующей структурой:

<Persons>
  <Person ID="1234">
     <LastName>Ivan</LastName>
     <FirstName>LD</Name>
     <Tel>154556</Tel>
     <email>253@mail.ru</email>
  </Person>
  <Person ID="1246">
     <LastName>Petr</LastName>
     <FirstName>FB</Name>
     <Tel>189266</Tel>
     <email>16@ya.ru</email>
  </Person>
  ...
</Persons>

Хочу прочитать из него некоторые данные (LastName и Tel) с помощью XElement в зависимости от значения атрибута ID. Подскажите, как это можно сделать?

Ответить

  Ответы Всего ответов: 14  

Номер ответа: 1
Автор ответа:
 BG(Алексей)



Вопросов: 26
Ответов: 295
 Профиль | | #1 Добавлено: 14.11.09 19:32
  1.         Dim myXml = <Persons>
  2.                         <Person ID="1234">
  3.                             <LastName>Ivan</LastName>
  4.                             <FirstName>LD</FirstName>
  5.                             <Tel>154556</Tel>
  6.                             <email>253@mail.ru</email>
  7.                         </Person>
  8.                         <Person ID="1246">
  9.                             <LastName>Petr</LastName>
  10.                             <FirstName>FB</FirstName>
  11.                             <Tel>189266</Tel>
  12.                             <email>16@ya.ru</email>
  13.                         </Person>
  14.                     </Persons>
  15.  
  16.         Dim s = myXml...<Person>
  17.  
  18.         For Each item In s
  19.             MsgBox(item.<LastName>.Value & " - " & item.<Tel>.Value)
  20.         Next

Ответить

Номер ответа: 2
Автор ответа:
 BG(Алексей)



Вопросов: 26
Ответов: 295
 Профиль | | #2 Добавлено: 14.11.09 19:36
Или так.
  1.         Dim myXml = <Persons>
  2.                         <Person ID="1234">
  3.                             <LastName>Ivan</LastName>
  4.                             <FirstName>LD</FirstName>
  5.                             <Tel>154556</Tel>
  6.                             <email>253@mail.ru</email>
  7.                         </Person>
  8.                         <Person ID="1246">
  9.                             <LastName>Petr</LastName>
  10.                             <FirstName>FB</FirstName>
  11.                             <Tel>189266</Tel>
  12.                             <email>16@ya.ru</email>
  13.                         </Person>
  14.                     </Persons>
  15.  
  16.         Dim s = From pers In myXml...<Person> _
  17.                 Select pers.<LastName>.Value, pers.<Tel>.Value
  18.  
  19.  
  20.         For Each item In s
  21.             MsgBox(item.LastName & " - " & item.Tel)
  22.         Next

Ответить

Номер ответа: 3
Автор ответа:
 tihu



Вопросов: 11
Ответов: 13
 Профиль | | #3 Добавлено: 14.11.09 21:39
а если я его из файла читаю, то тогда кок?

Ответить

Номер ответа: 4
Автор ответа:
 BG(Алексей)



Вопросов: 26
Ответов: 295
 Профиль | | #4 Добавлено: 14.11.09 21:51
  1. Dim fl = XDocument.Load("Имя файла.xml")

Ответить

Номер ответа: 5
Автор ответа:
 tihu



Вопросов: 11
Ответов: 13
 Профиль | | #5 Добавлено: 14.11.09 22:09
тогда код будет таким
  1. Dim s = From pers In f1.<Persons>.<Person> _
  2.                 Select pers.<LastName>.Value, pers.<Tel>.Value

я правильно понял?

Ответить

Номер ответа: 6
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #6 Добавлено: 15.11.09 14:10
Можно так
  1. Dim s = From pers In f1.<Persons>.<Person> _
  2.                 Select LastName = pers.<LastName>.Value, Tel = pers.<Tel>.Value

Ответить

Номер ответа: 7
Автор ответа:
 tihu



Вопросов: 11
Ответов: 13
 Профиль | | #7 Добавлено: 15.11.09 22:52
код правильный, но вот только у меня что-то в нем видит ошибку, подключил System.Xml.Linq и System.Xml, но все равно пишет что не хватает System.Linq и подчеркивает строку
  1. f1.<Persons>.<Person>
. Где мне найти System.Linq на компе?

Ответить

Номер ответа: 8
Автор ответа:
 BG(Алексей)



Вопросов: 26
Ответов: 295
 Профиль | | #8 Добавлено: 16.11.09 06:21
Если у тебя VS 2005 то не найдешь.

Ответить

Номер ответа: 9
Автор ответа:
 BG(Алексей)



Вопросов: 26
Ответов: 295
 Профиль | | #9 Добавлено: 16.11.09 06:23
Сорри, забыл.
Попробуй так.
  1. Dim s = From pers In f1...<Person> _
  2.                 Select LastName = pers.<LastName>.Value, Tel = pers.<Tel>.Value

Ответить

Номер ответа: 10
Автор ответа:
 tihu



Вопросов: 11
Ответов: 13
 Профиль | | #10 Добавлено: 16.11.09 07:26
так тоже не хочет( у меня VS 2008 SP1

Ответить

Номер ответа: 11
Автор ответа:
 BG(Алексей)



Вопросов: 26
Ответов: 295
 Профиль | | #11 Добавлено: 16.11.09 08:01
замени на SP3

Ответить

Номер ответа: 12
Автор ответа:
 BG(Алексей)



Вопросов: 26
Ответов: 295
 Профиль | | #12 Добавлено: 16.11.09 08:04
Попробуй в проэкте включи Option infer: On

Ответить

Номер ответа: 13
Автор ответа:
 tihu



Вопросов: 11
Ответов: 13
 Профиль | | #13 Добавлено: 16.11.09 10:33
решил проблему добавлением в reference System.Core.dll

Ответить

Номер ответа: 14
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #14 Добавлено: 17.11.09 18:55
Скорее всего ошибка была из-за того что при создании проекта выбрал .NET 2.0/3.0, а в них этой сборки нет, поэтому она по умолчанию не была подключена.

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам