使用c#解析XML文件

本文关键字:文件 XML 解析 使用 | 更新日期: 2023-09-27 17:53:51

我需要从xml中读取并获取所有客户id。我尝试了下面的代码。但是只返回一个id。我也提到过XML文件。在这个问题上有谁能帮忙吗?

var xdoc = XDocument.Load(@"d:'reply2.xml");
            var entries = xdoc.Descendants("customerlist").Select(x => new { custid = (int) x.Element("customerid")});
            foreach (var e in entries)
            {
                Console.WriteLine("Start: {0}", e.custid);
            }
            Console.ReadLine();

xml文件。

<customerlist>
<customerid>1001</customerid>
<customerid>1002</customerid>
<customerid>1003</customerid>
<customerid>1004</customerid>
</customerlist>

使用c#解析XML文件

您的代码不工作,因为您从文件中选择了所有customerlist(只有一个这样的元素,它是根),然后您将每个 customerlist元素在结果序列中投影到以下匿名类型:

new { custid = (int)x.Element("customerid")}

这是怎么回事?您从x(即customerlist)生成第一个customerid元素,并为源序列中的每个customerlist项返回新的匿名对象。但是你只有一个customerlist。所以你只有一个匿名对象作为查询结果。

如果您想使用属性custid:

选择匿名类型
var entries = from c in xdoc.Root.Elements("customerid")
              select new { custid = (int)c };

但是我认为你可以在这里简单地选择id序列而不创建新的类型:

var ids = xdoc.Root.Elements("customerid").Select(c => (int)c);

这是一个简单的方法:

List <string> customerId = new List< string>();
string xmlString = @"Your XML string";
XDocument xDoc = XDocument.Parse(xmlString);
foreach (var element in xDoc.Descendants("customerid"))
{
    customerId.Add(element.Value);
}