C#读取XML文件
2012-05-17 14:02
393 查看
XML文件格式内容如下:
XML文件中每个Node节点有多个属性(UserName、UserID、LevelID、ParentID),当操作类似此格式的XML文件节点的属性时就可用到XmlNode类的Attributes属性
新建WebForm页面,添加TreeView控件TreeView1
方法二:
linq to xml
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Xml.Linq;//添加引用
namespace TestWeb
{
public partial class WebForm1 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
TreeViewBind("", 1);
}
}
public void TreeViewBind(string ParentOrgCode, int LevelNo)
{
XElement XE = XElement.Load(@"E:\Test.xml");
TreeNode treenode = new TreeNode(XE.Attribute("xmlns").Value);
var query = from xe in XE.Elements()
where xe.Attribute("ParentID").Value == ParentOrgCode && xe.Attribute("LevelID").Value == LevelNo.ToString()
select xe;
foreach (XElement x in query)
{
TreeNode node = new TreeNode();
node.Text = x.Attribute("UserName").Value;
node.Value = x.Attribute("UserID").Value;
NodeBind(node, x.Attribute("UserID").Value, Int32.Parse(x.Attribute("LevelID").Value) + 1);
treenode.ChildNodes.Add(node);
}
TreeView1.Nodes.Add(treenode);
}
/// <summary>
/// 递归绑定
/// </summary>
/// <param name="CurrentNode"></param>
/// <param name="ParentOrgCode"></param>
/// <param name="LevelNo"></param>
private void NodeBind(TreeNode CurrentNode, string ParentOrgCode, int LevelNo)
{
XElement XE = XElement.Load(@"E:\Test.xml");
var query = from xe in XE.Elements()
where xe.Attribute("ParentID").Value == ParentOrgCode && xe.Attribute("LevelID").Value == LevelNo.ToString()
select xe;
foreach (XElement x in query)
{
TreeNode childnode = new TreeNode();
childnode.Text = x.Attribute("UserName").Value;
childnode.Value = x.Attribute("UserID").Value;
NodeBind(childnode, x.Attribute("UserID").Value, Int32.Parse(x.Attribute("LevelID").Value) + 1);
CurrentNode.ChildNodes.Add(childnode);
}
}
}
}
<?xml version="1.0" encoding="UTF-8"?> <DataSource xmlns="Company"> <Node UserName="公司1" UserID="G1" LevelID="1" ParentID="" ></Node> <Node UserName="公司2" UserID="G2" LevelID="1" ParentID="" ></Node> <Node UserName="公司3" UserID="G3" LevelID="1" ParentID="" ></Node> <Node UserName="部门1" UserID="B1" LevelID="2" ParentID="G1" ></Node> <Node UserName="部门2" UserID="B2" LevelID="2" ParentID="G1" ></Node> <Node UserName="部门3" UserID="B3" LevelID="2" ParentID="G2" ></Node> <Node UserName="科室1" UserID="K1" LevelID="3" ParentID="B1" ></Node> <Node UserName="科室2" UserID="K2" LevelID="3" ParentID="B1" ></Node> <Node UserName="科室3" UserID="K3" LevelID="3" ParentID="B3" ></Node> <Node UserName="组1" UserID="Z1" LevelID="4" ParentID="K1" ></Node> <Node UserName="组2" UserID="Z2" LevelID="4" ParentID="K1" ></Node> </DataSource>
XML文件中每个Node节点有多个属性(UserName、UserID、LevelID、ParentID),当操作类似此格式的XML文件节点的属性时就可用到XmlNode类的Attributes属性
新建WebForm页面,添加TreeView控件TreeView1
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Xml;//添加引用 namespace TestWeb { public partial class WebForm1 : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { TreeViewBind("", 1); } } /// <summary> /// 绑定TreeView /// </summary> /// <param name="ParentID"></param> /// <param name="LevelID"></param> public void TreeViewBind(string ParentID, int LevelID) { XmlDocument doc = new XmlDocument(); string xmlUrl = @"E:\Test.xml"; doc.Load(xmlUrl); XmlNode xmlNode = doc.DocumentElement; TreeNode treeNode = new TreeNode(xmlNode.Attributes["xmlns"].Value); foreach (XmlNode xn in xmlNode) { if (xn.Attributes["ParentID"].Value == ParentID && xn.Attributes["LevelID"].Value == LevelID.ToString()) { TreeNode node = new TreeNode(); node.Text = xn.Attributes["UserName"].Value; node.Value = xn.Attributes["UserID"].Value; NodeBind(node, xn.Attributes["UserID"].Value, Int32.Parse(xn.Attributes["LevelID"].Value) + 1); treeNode.ChildNodes.Add(node); } } TreeView1.Nodes.Add(treeNode); } /// <summary> /// 递归绑定 /// </summary> /// <param name="CurrentNode"></param> /// <param name="ParentID"></param> /// <param name="LevelID"></param> private void NodeBind(TreeNode CurrentNode, string ParentID, int LevelID) { XmlDocument doc = new XmlDocument(); string xmlUrl = @"E:\Test.xml"; doc.Load(xmlUrl); XmlNode xmlNode = doc.DocumentElement; foreach (XmlNode xn in xmlNode) { if (xn.Attributes["ParentID"].Value == ParentID && xn.Attributes["LevelID"].Value == LevelID.ToString()) { TreeNode childnode = new TreeNode(); childnode.Text = xn.Attributes["UserName"].Value; childnode.Value = xn.Attributes["UserID"].Value; NodeBind(childnode, xn.Attributes["UserID"].Value, Int32.Parse(xn.Attributes["LevelID"].Value) + 1); CurrentNode.ChildNodes.Add(childnode); } } } } }
方法二:
linq to xml
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Xml.Linq;//添加引用
namespace TestWeb
{
public partial class WebForm1 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
TreeViewBind("", 1);
}
}
public void TreeViewBind(string ParentOrgCode, int LevelNo)
{
XElement XE = XElement.Load(@"E:\Test.xml");
TreeNode treenode = new TreeNode(XE.Attribute("xmlns").Value);
var query = from xe in XE.Elements()
where xe.Attribute("ParentID").Value == ParentOrgCode && xe.Attribute("LevelID").Value == LevelNo.ToString()
select xe;
foreach (XElement x in query)
{
TreeNode node = new TreeNode();
node.Text = x.Attribute("UserName").Value;
node.Value = x.Attribute("UserID").Value;
NodeBind(node, x.Attribute("UserID").Value, Int32.Parse(x.Attribute("LevelID").Value) + 1);
treenode.ChildNodes.Add(node);
}
TreeView1.Nodes.Add(treenode);
}
/// <summary>
/// 递归绑定
/// </summary>
/// <param name="CurrentNode"></param>
/// <param name="ParentOrgCode"></param>
/// <param name="LevelNo"></param>
private void NodeBind(TreeNode CurrentNode, string ParentOrgCode, int LevelNo)
{
XElement XE = XElement.Load(@"E:\Test.xml");
var query = from xe in XE.Elements()
where xe.Attribute("ParentID").Value == ParentOrgCode && xe.Attribute("LevelID").Value == LevelNo.ToString()
select xe;
foreach (XElement x in query)
{
TreeNode childnode = new TreeNode();
childnode.Text = x.Attribute("UserName").Value;
childnode.Value = x.Attribute("UserID").Value;
NodeBind(childnode, x.Attribute("UserID").Value, Int32.Parse(x.Attribute("LevelID").Value) + 1);
CurrentNode.ChildNodes.Add(childnode);
}
}
}
}
相关文章推荐
- C# XML文件读取
- C#读取XML文件——自定义类
- C#-XML文件提取字符串+字符串存为XML文件+创建XML(自定义节点)文件+读取节点内容
- c#读取xml文件
- C#读取XML文件经典案例
- 使用 Visual C# .NET 从文件中读取 XML
- c#使用Dataset读取XML文件动态生成菜单的方法
- C# 读取xml文件
- c# winform读取xml文件创建菜单的代码
- c#读取xml文件到datagridview中
- c#读取xml文件到datagridview中
- c#读取xml文件到datagridview实例
- HOW TO:使用 Visual C# .NET 从文件中读取 XML
- C# 创建,读取,写入XML文件
- C#之读取XML文件内容
- C#中使用XMLReader读取XML文件
- C#读取剪贴板内容并把内容记录在XML文件中
- C# 创建,读取,写入 XML文件
- C#读取xml文件
- C#读取XML文件