C# Datatable treeview XML

XML:---------------------------------------------------------------------------------... XML:
-----------------------------------------------------------------------------------
<?xml version="1.0" encoding="utf-16" ?>
<root>
<BM>
<Name>物理端点</Name>
<BM>
<Name>本地网段</Name>
<BM>
<Name>本机</Name>
</BM>
</BM>
<BM>
<Name>广播地址</Name>
</BM>
<BM>
<Name>组播地址</Name>
</BM>
<BM>
<Name>网关</Name>
</BM>
</BM>
<BM>
<Name>IP端点</Name>
<BM>
<Name>本地子网</Name>
</BM>
<BM>
<Name>Internet地址</Name>
</BM>
<BM>
<Name>私有网络</Name>
</BM>
<BM>
<Name>组播地址</Name>
</BM>
</BM>
</root>
-----------------------------------------------------------------------------------
XML是我自己写的,当时考虑的不是很完整。以前没怎么用到XML,现在我的想法是读取XML内的数据,把数据放到Datatable容器中,再从DataTable中指定数据绑定到TreeView上,这种想法应该是可以的吧?希望大侠们给个完整的例子,我参考下...先在此谢谢额....
-----------------------------------------------------------------------------------
满足我条件的再加分。封顶200分(because只有这么多)
展开
 我来答
头奖彩票网
推荐于2016-07-07 · TA获得超过368个赞
知道小有建树答主
回答量:237
采纳率:0%
帮助的人:105万
展开全部
我给你提个建议哈,不知道这个xml文件是不是你自己定义的,如果是自己定义的,那我觉得很不合理,因为捏,在xml中,它主要操作对象是节点,而不是值。。你的这个xml文件就相当于浪费了很多节点。这胡物早样算法的时间复杂度就无故增加了N倍。效率也就低了N倍。而且算法实现起来也很不方便。。所以哈,应该用尽可能少的节点来结构化数据。。 比如把值赋给节点属性。这样就可减少一半的节点
如果客观原因导致这样的结构,那就勉为其难了哈
下面的这个程序是根据你提供的xml编写的,所以不是通用哈,比如你把文件改来含有<BM><BM>这样的情况就会混乱。蚂旁。。 但你可以适当的更改一下

/// <summary>
/// 绑定TreeView控件
/// </summary>
/// <param name="treeview">需要进行绑定的TreeView控件</裤雀param>
protected void BindTreeView(TreeView treeview)
{
//利用xmldoc对象读取xml文件
XmlDocument xmldoc = new XmlDocument();
xmldoc.Load(Server.MapPath("xmlfile.xml"));//xml文件地址
//读取根节点
XmlElement xml = xmldoc.DocumentElement;
TreeNode tn = new TreeNode();
tn.Text = "根结点";
//递归遍历节点
gNodes(xml, tn);//递归获取节点
treeview.Nodes.Add(tn);
}
/// <summary>
/// //递归遍历节点
/// </summary>
/// <param name="xmlnode">当前xml文件中的节点</param>
/// <param name="tn">treeview中当前节点</param>
public void gNodes(XmlNode xmlnd, TreeNode tn)
{
//获取当前节点下的所有节点
XmlNodeList xmlnl = xmlnd.ChildNodes;
TreeNode tn_nodes = null;
foreach (XmlNode xmlnode in xmlnl)
{
if (xmlnode.Name == "BM")
{
if (xmlnode.ChildNodes.Count > 1)
{
tn_nodes = new TreeNode();
tn_nodes.Text = xmlnode.FirstChild.InnerText;
tn.ChildNodes.Add(tn_nodes);
gNodes(xmlnode, tn_nodes);//递归获取节点

}
else if (xmlnode.ChildNodes.Count == 1)
{
tn_nodes = new TreeNode();
tn_nodes.Text = xmlnode.FirstChild.InnerText;
tn.ChildNodes.Add(tn_nodes);
}
}
}
}
a1012144015
2016-01-05 · TA获得超过6415个赞
知道大有可为答主
回答量:9038
采纳率:40%
帮助的人:1345万
展开全部
我给你提个建议哈,不知道这个xml文件是不是你自己定义的,如果是自己定义的,那我觉得很不合理,因为捏,在xml中,它主要操作对象是节点,而不是值。。你的这个xml文件就相当于浪费了很多节点。这胡物早样算法的时间复杂度就无故增加了N倍。效率也就低了N倍。而且算法实现起来也很不方便。。所以哈,应该用尽可能少的节点来结构化数据。。 比如把值赋给节点属性。这样就可减少一半的节点
如果客观原因导致这样的结构,那就勉为其难了哈
下面的这个程序是根据你提供的xml编写的,所以不是通用哈,比如你把文件改来含有<BM><BM>这样的情况就会混乱。蚂旁。。 但你可以适当的更改一下

/// <summary>
/// 绑定TreeView控件
/// </summary>
/// <param name="treeview">需要进行绑定的TreeView控件</裤雀param>
protected void BindTreeView(TreeView treeview)
{
//利用xmldoc对象读取xml文件
XmlDocument xmldoc = new XmlDocument();
xmldoc.Load(Server.MapPath("xmlfile.xml"));//xml文件地址
//读取根节点
XmlElement xml = xmldoc.DocumentElement;
TreeNode tn = new TreeNode();
tn.Text = "根结点";
//递归遍历节点
gNodes(xml, tn);//递归获取节点
treeview.Nodes.Add(tn);
}
/// <summary>
/// //递归遍历节点
/// </summary>
/// <param name="xmlnode">当前xml文件中的节点</param>
/// <param name="tn">treeview中当前节点</param>
public void gNodes(XmlNode xmlnd, TreeNode tn)
{
//获取当前节点下的所有节点
XmlNodeList xmlnl = xmlnd.ChildNodes;
TreeNode tn_nodes = null;
foreach (XmlNode xmlnode in xmlnl)
{
if (xmlnode.Name == "BM")
{
if (xmlnode.ChildNodes.Count > 1)
{
tn_nodes = new TreeNode();
tn_nodes.Text = xmlnode.FirstChild.InnerText;
tn.ChildNodes.Add(tn_nodes);
gNodes(xmlnode, tn_nodes);//递归获取节点

}
else if (xmlnode.ChildNodes.Count == 1)
{
tn_nodes = new TreeNode();
tn_nodes.Text = xmlnode.FirstChild.InnerText;
tn.ChildNodes.Add(tn_nodes);
}
}
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
raymond418
2009-03-26 · TA获得超过169个赞
知道小有建树答主
回答量:310
采纳率:0%
帮助的人:201万
展开全部
你的问题是什么啊
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式