2010-04-22 2 views
0

Ниже представлен мой XML-файл. Основываясь на <type>, мне нужно получить все значения узлов <customers></customers>.Поиск XML с использованием LINQ

<?xml version='1.0' encoding='utf-8' ?> 
<All> 
    <Customers> 
     <Customer> 
      <Name> Brisbane </Name> 
      <age> 18 </age> 
      <id> 1234 </id> 
      <type> owner </type> 
     </Customer> 

     <details> 
      <address> 123,Brisbane </address> 
      <location> Indonesia </location> 
     </details> 
     <contact> 
      <phone> 123456789 </phone> 
      <fax> 12548976 </fax> 
     </contact> 
    </Customers> 

    <Customers> 
     <Customer> 
      <Name> Manila</Name> 
      <age> 16 </age> 
      <id> 1200 </id> 
      <type> seller</type> 
     </Customer> 

     <details> 
      <address> Rich Street </address> 
      <location> Fabia </location> 
     </details> 

     <contact> 
      <phone> 987456321</phone> 
      <fax> 23654897 </fax> 
     </contact> 
    </Customers> 
</All> 

Например, в приведенном выше примере есть два типа:

  1. владелец
  2. продавец.

Так что, если я выбираю «владельца» Мне нужно, чтобы получить подробную информацию следующим образом

Brisbane 
18 
1234 
123,Brisbane 
Indonesia 
123456789 
12548976 

Так что, если я выбираю «продавец» Мне нужно, чтобы получить подробную информацию следующим образом.

Manila 
16 
1200 
Rich Street 
Fabia 
987456321 
23654897 

Так как мне это сделать? Каким будет пример кода для этого?

+0

Вы уверены, что ваш XML-файл такой, какой он есть? Не следует ли включать -tag всех клиентов, а не одного ребенка на тег? –

+1

Добро пожаловать в StackOverflow! На этом сайте у вас будет больше шансов получить ответы, если вы покажете код, который вы уже пробовали, и не можете понять. Общий, «пожалуйста, дайте мне код», как правило, не заставит вас очень далеко. – CoderDennis

ответ

0

ОК говорят, что XML называется «doc».

 var results_sellers = (from item in doc.Descendants("Customer") 
           where (string)item.Element("type") == "seller" 
           select new { 
            Name = item.Element("Name").Value, 
            Age = item.Element("Age").Value, 
            Id = item.Element("Id").Value, 
            Type = item.Element("type").Value 
           }); 

     //Then you can do the following 
     foreach (var e in results_sellers) 
     { 
      Console.WriteLine(e.Name, e.Id, e.Type, e.Age); 
     }