今天由于项目原因,需要用C#解析Xml文件,由于使用的是3.5的framework,所以想到拿Linq to xml试试水。于是按着MSDN上的作法自己试了一下
Code
XElement root = XElement.Load("ProjectSoruce.xml");
IEnumerable<XElement> Resources =
from el in root.Descendants("Task")
select el;
foreach (XElement el in Resources)
Console.WriteLine(el); 结果根本取不到Task元素。一头雾水,而MSDN上翻来覆去就那么几个例子。反复调试了一个小时,后来终于发现,原来我的XML有命名空间,而Linq To XML查询时,需要把这个命名空间也带上。代码应该这样写
@"http://schemas.microsoft.com/project"; 是我自己的XML上带的命名空间
Code
XNamespace ns = @"http://schemas.microsoft.com/project";
XElement root = XElement.Load("ProjectSoruce.xml");
IEnumerable<XElement> Resources =
from el in root.Element(ns + "Tasks").Elements(ns + "Task")
select el;
foreach (XElement el in Resources)
Console.WriteLine(el);
//Pause the application
Console.ReadLine();