构造linq to xml操作xml的c 代码

c xml  时间:2021-02-14  阅读:()

linq to xml操作XML的c#代码

LINQ to XML提供了更方便的读写xml方式。前几篇文章的评论中总有朋友提你为啥不用linq to xml现在到时候了 linq to xml出场了。 .Net中的System.Xml.Linq命名空间提供了linq to xml的支持。这个命名空间中的XDoc umentXElem ent以及XTextXAttribute提供了读写xml文档的关键方法。

1.使用linq to xml写xml

使用XD o c ument的构造函数可以构造一个Xml文档对象使用XElement对象可以构造一个xml节点元素使用XAttribute构造函数可以构造元素的属性使用XText构造函数可以构造节点内的文本。 如下实例代码class Programstatic void Main(string[] args)var xDoc=new XDocument(new XElement(“root”,new XElement(“dog”,new XText(“dog said black is a beautify color”),new XAttribute(“c olor”, “black”)),new XElement(“c at”),new XElement(“p ig”, “pig is great”)));

//xDoc输出xml的enc oding是系统默认编码对于简体中文操作系统是gb2312

//默认是缩进格式化的xml而无须格式化设置xDoc.Save(Console.Out);

Cons ole.Read();

}

上面代码将输出如下Xml

?xml version=“1.0”enc oding=“gb2312”?

rootdog color=“black”dog said black is a beautify color/dogcat/pig pig is great /pig

/root

可以看出linq to xml比XmlDocument和XmlWriter要方便很多。

2.使用linq to xml读取xml

Linq是从集合中查询对象 在linq to xml 中的集合是通过XElement 的Elements(),Elements(string name),以及Descendants 、 Desc endantsAndSelf、 Anc estors 、Anc estorsAndS elf的几个重载方法中获得。 获得XElement集合之后可以通过XElement的Attribute(string name)方法获得元素的属性值可以通过XElement的Value属性获得节点的文本值使用linq就可以方便的做查询做筛选排序了还是上例中的xml我们要读取root的所有字节点并打印出来如下代码class Programstatic void Main(string[] args)var xDoc=new XDocument(new XElement(“root”,new XElement(“dog”,new XText(“dog said black is a beautify color”),new XAttribute(“c olor”, “blac k”)),new XElement(“c at”),new XElement(“p ig”, “pig is great”)));

//xDoc输出xml的enc oding是系统默认编码对于简体中文操作系统是gb2312

//默认是缩进格式化的xml而无须格式化设置

xDoc.Save(Console.Out);

Console.WriteLine();var query=from item in xDoc.Element(“root”).Elements()select new

Typ eNam e=item.Nam e,

Saying=item.Value,

Color=item.Attribute(“c olor”)==null?(s tring)null:item.Attribute(“c olor”).Va lueforeach(var item in query)

Console.WriteLine(“{0} „s color is {1},{0} said{2}”,item.TypeName,item.Color??”Unknown”,item.Saying??”nothing”);

Cons ole.Read();

}

3.Linq to xml简单的应用

应用需求 读取博客园的rss然后在页面上输出最新的10篇博客信息

实现要点 通过XD oc ument的Lo ad静态方法载入Xml通过linq查询最新10条数据

代码如下:

%@P age Language=“C#”Auto Event Wireup=“true”%script runat=“s erver”protected override void OnLoad(EventArgs e)

//实际应用,通过读取博客园的RS S生成Html代码显示最新的博客列表

//使用XD oc ument的Lo ad静态方法载入Xml

var r ss XD o c=XD oc ument.Lo ad(“http://www.c nb lo g s.c om/r s s”);

//使用linq to xml查询前10条新博客var queryBlogs=(from blog in rssXDoc.Descendants(“item”)select new

Title=blog.Element(“title”).Value,

Url=blog.E lement(“link”).Va lue,

PostTime=DateTime.Parse(blog.Element(“pubDate”).Value)

}).Take(20);repeaterBlogs.DataSourc e=queryBlogs;repeaterBlogs.DataBind();bas e.OnLoad(e);

/script

!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN”“http://w ww.w 3.org/T R/xhtml 1/DT D/xhtml 1-trans itiona l.dtd”html xmlns=“http://www.w 3.org/1999/xhtml”head runat=“s erver”title Linq to Xml实例/title

/headbodyasp:Repeater ID=“repeater Blogs”Enab leView State=“fals e”runat=“s erver”

ItemTemplateli span

%#Eval(“PostTime”)%/span a href=“%#Eval(“Url”)%“%#Eval(“Title”)%/a/li/ItemTemplate

/as p:Rep eater

/ol

/body

/html

iON Cloud七月促销适合稳定不折腾的用户,云服务器新购半年付8.5折,洛杉矶/圣何塞CN2 GT线路,可选Windows系统

iON Cloud怎么样?iON Cloud今天发布了7月份优惠,使用优惠码:VC4VF8RHFL,新购指定型号VPS半年付或以上可享八五折!iON的云服务器包括美国洛杉矶、美国圣何塞(包含了优化线路、CN2 GIA线路)、新加坡(CN2 GIA线路、PCCW线路、移动CMI线路)这几个机房或者线路可供选择,有Linux和Windows系统之分,整体来说针对中国的优化是非常明显的,机器稳定可靠,比...

无法忍受旧版不兼容PHP7+主题 更换新主题

今天父亲节我们有没有陪伴家人一起吃个饭,还是打个电话问候一下。前一段时间同学将网站账户给我说可以有空更新点信息确保他在没有时间的时候还能保持网站有一定的更新内容。不过,他这个网站之前采用的主题也不知道来源哪里,总之各种不合适,文件中很多都是他多年来手工修改的主题拼接的,并非完全适应WordPress已有的函数,有些函数还不兼容最新的PHP版本,于是每次出现问题都要去排查。于是和他商量后,就抽时间把...

HaBangNet(6.95美元/月)美国vps 5TB流量/德国vps 香港双向CN2 GIA VPS

HaBangNet支持支付宝和微信支付,只是价格偏贵,之前国内用户并不多。这次HaBangNet推出三个特价套餐,其中美国机房和德国机房价格也还可以,但是香港机房虽然是双向CN2 GIA线路,但是还是贵的惊人,需要美国和德国机房的可以参考下。HaBangNet是一家成立于2014年的香港IDC商家,中文译名:哈邦网络公司,主营中国香港、新加坡、澳大利亚、荷兰、美国、德国机房的虚拟主机、vps、专用...

c xml为你推荐
快递打印快递单上是怎么打印上去的,我每次都是手写的易pc华硕易PC怎么样?性价比到底怎么样?网站运营一般网站如何运营显卡温度多少正常显卡温度是多少才算正常的?中小企业信息化中小企业如何进行企业信息化规划qq怎么发邮件如何通过QQ发送邮件ios7固件下载ios 7及以上固件请在设备上点信任在哪点xp系统停止服务xp系统停止服务怎么办免费免费建站我想建一个自己的免费网站,但不知道那里有..二层交换机集线器和二层交换机,三层交换机的区别
com域名注册1元 edgecast 全球付 sugarsync 59.99美元 百兆独享 idc资讯 cdn联盟 泉州电信 中国电信测网速 免费mysql数据库 东莞主机托管 域名转入 websitepanel 免费的加速器 ipower studentmain tracert rsync 网络安装 更多