本文转载:http://www.cnblogs.com/infozero/archive/2010/07/13/1776383.html
1. demo.xml
< note >
< conf >
< to > infozero </ to >
< from > lerroy </ from >
< heading > 测试信息 </ heading >
< body > 第一条测试信息 </ body >
< title name ="我的第一条消息" > from myself </ title >
</ conf >
< conf >
< to > infozero@163.com </ to >
< from > text </ from >
< heading > 时刻提醒我 </ heading >
< body > 这是一条测试信息! </ body >
< title name ="我的第二条消息" > from others </ title >
</ conf >
</ note >
2.在 程序中引用以下命名空间:
using System.Linq;
using System.Xml.Linq;
3.读取方法如下:
{
static void Main( string [] args)
{
XDocument doc = XDocument.Load( " demo.xml " );
var text = from t in doc.Descendants( " conf " ) //定位到节点 (XML字符串中一定要有root根节点,否者读取不到。)
.Where(w => w.Element( " to " ).Value.Contains( ' @ ' )) // 若要筛选就用上这个语句
select new
{
to = t.Element( " to " ).Value,
froms = t.Element( " from " ).Value,
head = t.Element( " heading " ).Value,
body = t.Element( " body " ).Value,
title = t.Element( " title " ).Attribute( " name " ).Value // 注意此处用到 attribute
};
foreach (var a in text)
{
Console.WriteLine(a.to);
Console.WriteLine(a.froms);
Console.WriteLine(a.head);
Console.WriteLine(a.body);
Console.WriteLine(a.title);
}
Console.ReadKey();
}
}
结果:
小结: Linq to Xml 确实是个好东西 ,它极大地方便了我们的编程。
Linq to XML读取xml的方法
添加应用:using System.Xml.Linq;
读取xml最重要的要知道xml是那种写法,因为linq已经把读取方式封装的相对傻瓜了,要有问题一定xml的结构问题。
第一种写法:
<?xml version="1.0" encoding="utf-8" ?>
<feeds>
<feed>
<image>ddddddddd</image>
<link>fffffffff</link>
<title>ddddddddddddddddd</title>
</feed>
</feeds>
Linq语句:
XDocument xdoc= XDocument.Load(Server.MapPath("xxx.xml"));
var ad = from a in xdoc.Descendants("feed")
select new
{
image = a.Element("image").Value,
link = a.Element("link").Value,
title = a.Element("title").Value
};
foreach (var a in ad)
Response.Write(a.image);
第二种xml
<?xml version="1.0" encoding="utf-8" ?>
<BizADsList>
<adData aid="1" image="815.jpg" link="http://www.dizhitiao.com" title="测试1"/>
<adData aid="2" image="5815.jpg" link="http://www.dizhitiao.com" title="测试2"/> // BizADsList节点元素下多个相同的adData节点元素
</BizADsList>
Linq语句:
XDocument adList = XDocument.Load(Server.MapPath("Data.xml"));
var ad = from a in adList.Descendants("BizADsList").Elements("adData")
select new
{
image = a.Attribute("image").Value,
link = a.Attribute("link").Value,
title = a.Attribute("title").Value
};
string s = "";
foreach (var a in ad)
s += a.image;
别告诉我没看出区别来。总之一句话,对xml要先多些了解。
---------- 后续补充:-----
另外一种 XML 格式 的解析参见: http://www.cnblogs.com/portalsky/archive/2008/09/11/1289461.html
XML 增删改查: http://www.cnblogs.com/greatverve/archive/2010/07/13/linq-to-xml-one-begin.html