使用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>
您的代码不工作,因为您从文件中选择了所有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);
}