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窗体应用程序如下:
![](http://hi.csdn.net/attachment/201108/8/0_13128173972quq.gif)
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();
}
}
}
使用LINQ to XML 可以访问和修改内存中的文档对象模型(DOM),相比DOM,LINQ to XML 是一种更加轻量级的模型,创建、修改、查询更加方便;
1.新建一个Windows窗体应用程序如下:
![](http://hi.csdn.net/attachment/201108/8/0_13128173972quq.gif)
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();
}
}
}
相关文章推荐
- linq to xml(添加节点1)
- Linq To Xml 备忘录3(使用Namespace的查询)
- Linq to XML customize distinct function
- [Linq]Linq To Xml (待整理)
- C#基础巩固(3)-Linq To XML 读取XML
- linq to xml
- LINQ TO XML
- 使用linq to xml 快速创建自己的Rss 之二 Syndication篇
- C# ~ 从 XML 到 Linq 到 Linq to XML
- LINQ to XML
- Linq to XML 用一句话读出RSS文章列表代码
- Linq to Xml (1) 创建和查询包含命名空间的XML文档
- 步步为营VS 2008 + .NET 3.5(14) - XLINQ(LINQ to XML)之针对XML文件的添加、查询、更新和删除
- Linq To XML:用名称查找元素
- LINQ之路21:LINQ to XML之生成X-DOM(Projecting)
- Linq学习笔记---Linq to Xml操作
- LINQ to XML 笔记,确实比DOM好用,方便。
- Linq to xml:流式处理 XmlReader
- LINQ to XML 学习总结
- C# Linq To XML 读取XML,修改属性