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只有这么多) 展开
-----------------------------------------------------------------------------------
<?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只有这么多) 展开
3个回答
展开全部
我给你提个建议哈,不知道这个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);
}
}
}
}
如果客观原因导致这样的结构,那就勉为其难了哈
下面的这个程序是根据你提供的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);
}
}
}
}
展开全部
我给你提个建议哈,不知道这个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);
}
}
}
}
如果客观原因导致这样的结构,那就勉为其难了哈
下面的这个程序是根据你提供的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);
}
}
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你的问题是什么啊
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询