如何使用linq读取xml文件
本文关键字:xml 文件 读取 linq 何使用 | 更新日期: 2023-09-27 18:05:20
我有这个db.xml文件
<items>
<item>
<title>Title1</title>
<year>2013</title>
<categories>
<category>Category1</category>
<category>Category2</category>
<category>Category3</category>
</categories>
<count>10</count>
</item>
(and so on)
</items>
I read like that:
var items = from item in xdoc.Descendants("item")
select new
{
Title = item.Element("title").Value,
Year = item.Element("year").Value,
Categories = item.Element("categories").Value, // I know this is wrong
Count = item.Element("count").Value
};
问题是我如何读取类别并将它们添加到列表中?
foreach (var item in items)
{
book.Title = item.Title;
book.Year = item.Year;
foreach (var Category in Categories)
{
book.Categories.Add(Category);
}
book.Count = item.Count;
books.Add(book);
}
最好使用强制转换(到string
,到int
等),然后直接读取元素的值。这里是查询,返回Year
和Count
属性的整数值。Categories
are IEnumerable<string>
:
var items = from item in xdoc.Descendants("item")
select new {
Title = (string)item.Element("title"),
Year = (int)item.Element("year"),
Count = (int)item.Element("count"),
Categories = from c in item.Element("categories").Elements()
select (string)c
};
如果您想要Categories
作为List<string>
,那么按以下方式解析类别:
Categories = item.Element("categories")
.Elements()
.Select(c => (string)c)
.ToList()
可以取它的元素列表
var items = from item in xdoc.Descendants("item")
select new
{
Title = item.Element("title").Value,
Year = item.Element("year").Value,
Categories = item.Descendants("categories").Descendants().Select(x=>x.Value).ToList(),
Count = item.Element("count").Value
};