您的位置:首页 > 其它

LINQ to XML

2011-08-08 23:30 204 查看
XML 应用非常广泛:Internet网页文件、聚合RSS文件(http://rss.sina.com.cn/news/marquee/ddt.xml)、程序配置文件、Webservice。

使用LINQ to XML 可以访问和修改内存中的文档对象模型(DOM),相比DOM,LINQ to XML 是一种更加轻量级的模型,创建、修改、查询更加方便;

1.新建一个Windows窗体应用程序如下:



2.代码:

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

using System.Xml.Linq;

namespace WindowsFormsApplication11

{

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

}

private void button1_Click(object sender, EventArgs e)

{

//从网页上加载Rss文件

XElement doc = XElement.Load(this.textBox1.Text, LoadOptions.None);

//用LINQ检索所有子节点

var els = from v in doc.Elements() select v;

this.appendtree(els, treeView1.Nodes, null);

}

private void appendtree(IEnumerable<XElement> els, TreeNodeCollection tnc, XElement xe)

{

tnc.Clear();

if (els.Count<XElement>() == 0 && xe != null)

{

tnc.Add(new TreeNode(xe.Value));

return;

}

foreach (var item in els)

{

TreeNode tn = new TreeNode(item.Name.LocalName, new TreeNode[] { new TreeNode(string.Empty) });

tn.Tag = item;

tnc.Add(tn);

}

}

private void treeView1_AfterExpand(object sender, TreeViewEventArgs e)

{

if (e.Node != null)

{

XElement xe = e.Node.Tag as XElement;

if (xe != null)

{

//用LINQ查询子节点

var els = from el in xe.Elements() select el;

this.appendtree(els, e.Node.Nodes, xe);

}

}

}

private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)

{

e.Node.Expand();

}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: