使用 LINQ 搜索 XML

发布于 2024-08-29 11:25:25 字数 1669 浏览 3 评论 0原文

下面是我的 XML 文件。基于,我需要获取的所有节点值。

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

那么我该怎么做呢?对此有什么示例代码吗?

The below is my XML file. Based on the <type>, I need to get all the node values of <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>

For example, in the above example there are two types:

  1. owner
  2. seller.

So if I choose "owner" I need to get the details as follows

Brisbane
18
1234
123,Brisbane
Indonesia
123456789
12548976

So if I choose "seller" I need to get the details as follows.

Manila
16
1200
Rich Street
Fabia
987456321
23654897

So how do I do this? What would some sample code for this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

蒗幽 2024-09-05 11:25:25

好的,假设 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);
        }

OK say the XML is called "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);
        }
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文