LINQ最大的好处是LINQ to XML,我觉得。
先引入System.Xml.Linq命名空间,其中常用的属性就是XElement。
LINQ基于DOM方式来操作XML,意思就是将XML文件在内存中构造成DOM树,然后来进行操作,将XML加载到内存两种方法。
1:将XML文件加载到内存。 XElement xml1 = XElement.Load(Server.MapPath("book.xml"));
2:构造XML树。
XElement xml2 = new XElement("People",
new XElement("Name", new XAttribute("中文", "哈哈") //这里只有一个后括号
new XElement("Age", "18"),
new XElement("Sex", "男")
),
new XElement("Name", new XAttribute("中文", "呵呵") //这里只有一个后括号
new XElement("Age", "19"),
new XElement("Sex", "女")
)
);
这时构造出来的XML树结构为
<People>
<Name 中文="哈哈">
<Age>18</Age>
<Sex>男</Sex>
</Name>
<Name 中文="呵呵">
<Age>19</Age>
<Sex>女</Sex>
</Name>
</People>
然后用LINQ来查找
IEnumerable<XElement> name =
from ele in xml2.Elements("Name")
where (string)ele.Attribute("中文")=="哈哈" //有一个转换
select ele ;
//这时的LINQ表达式仅仅是一个表达式,并无结果。只有要引用LINQ表达式的结果时,LINQ表达式才会执行,查询出结果。
foreach ( XElement x in name)
{
Response.Write(Server.HtmlEnCode(x.Element("Age"));
}
//运行结果为18
由于XML中有"<"和">"符号,所以要用HtmlEncode来预处理结果。实际ele的结果是一个XML子元素
<Name 中文="哈哈">
<Age>18</Age>
<Sex>男</Sex>
</Name>