Поиск XML с использованием LINQ - PullRequest
0 голосов
/ 22 апреля 2010

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

<?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

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

1 Ответ

0 голосов
/ 21 января 2014

ОК, скажите, что 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);
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...