自己也写了那么多,但还有很多不懂,有点浮躁吧,但饭还是要吃啊,说说LINQ TO XML吧。
LINQ TO XML位于System.Xml.Linq程序集,并且大多数类型位于System.Xml.Linq命名空间。该命名空间下几乎所有类型都以X为前缀;普通DOM API中的Element对应LINQ TO XML中的XElement。列举下都有哪些类型。
1 var element = new XElement("root", new XElement("child")); 2 Console.WriteLine(element);
1 <root> 2 <child /> 3 </root>
1 var element1 = new XElement("root", new XElement("child", DateTime.Now)); 2 Console.WriteLine(element1);
1 <root> 2 <child>2015-01-28T22:35:41.9713268+08:00</child> 3 </root>
1 var list = new List<User> { 2 new User {Name="a",Age=1 }, 3 new User {Name="b",Age=2 }, 4 new User {Name="c",Age=3 }, 5 new User {Name="d",Age=4 } 6 }; 7 8 var element2 = new XElement("root", list.Select(user => new XElement("child", user.Name))); 9 Console.WriteLine(element2);
1 var element3 = new XElement("root", list.Select(user => new XElement("child", new XAttribute("name", user.Name), new XAttribute("age", user.Age)))); 2 Console.WriteLine(element3);
1 <root> 2 <child>a</child> 3 <child>b</child> 4 <child>c</child> 5 <child>d</child> 6 </root> 7 8 9 <root> 10 <child name="a" age="1" /> 11 <child name="b" age="2" /> 12 <child name="c" age="3" /> 13 <child name="d" age="4" /> 14 </root>
对于XElement来说可迭代的东西太多了,XElement包含很多轴方法(轴方法,个人理解就是直接了当的方法),如什么什么点,比如New Element("root").Elements就是返回在root下所有的子节点,New Element("root").Attributes就是root中所有特性节点。还是罗列下吧,但不止这些。
对单个节点使用的轴方法返回的节点序列,完全可以使用LINQ来查询,或者使用扩展方法来做一些操作,可以看到LINQ从查询内存中object到数据库中的数据,再到XML,使用的都是相同的方法(对于我们使用者),完美地结合起来。
请斧正。