首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

C#怎么操纵XML文件,把数据显示到TreeView中

2012-05-03 
C#如何操纵XML文件,把数据显示到TreeView中。环境:VS2010 .Net 4.0XML文档。拜求完成以下功能:使用C#操纵XML

C#如何操纵XML文件,把数据显示到TreeView中。
环境:VS2010 .Net 4.0
XML文档。
拜求完成以下功能:
使用C#操纵XML(代码如下),在TreeView中树形显示出来。

最好能提供一个详细的程序代码和流程。

我用了一个Treeview,一个bottom。

忙碌了一天还是没有解决好....崩溃中

XML code
<?xml version="1.0" encoding="utf-8"?><Config_File>  <Device>    <Name>惯性</Name>    <SignalFormat>      <Name>000格式</Name>      <Signal>        <中文>角</中文>        <变量>ithetal</变量>        <DataType>short int (32位)</DataType>        <Lable>324</Lable>        <MSBEnable>1shishiwangdizhi</MSBEnable>        <MSBValue>90</MSBValue>        <MSB>27</MSB>        <LSB>8</LSB>        <矩阵>3</矩阵>        <校验>奇</校验>        <地址>0x10000</地址>      </Signal>    </SignalFormat>    <SignalFormat>      <Name>物理量</Name>      <Signal>        <中文>角</中文>        <变量>fthetal</变量>        <DataType>float(32位)</DataType>        <地址>0x10002</地址>      </Signal>    </SignalFormat>  </Device>  <Device>    <Name>计算机</Name>    <SignalFormat>      <Name>111格式</Name>      <Signal>        <中文>方式</中文>        <变量>Mode</变量>        <DataType>unsigned short(16位)</DataType>        <地址>0x10006</地址>        <属性>          <字段>            <中文>命令</中文>            <低位>15</低位>            <高位>15</高位>          </字段>          <字段>            <中文>模式</中文>            <低位>14</低位>            <高位>13</高位>            </字段>        </属性>      </Signal>      <Signal>        <中文>最高</中文>        <变量>Hrmin</变量>        <DataType>unsigned short(16位)</DataType>        <MSBEnable>0</MSBEnable>        <MSBValue>0.01</MSBValue>        <MSB>15</MSB>        <LSB>0</LSB>        <地址>0x10008</地址>      </Signal>    </SignalFormat>    <SignalFormat>      <Name>物理量</Name>      <Signal>        <中文>命令</中文>        <变量>ModeCommd</变量>        <DataType>int(32位)</DataType>        <地址>0x1000c</地址>      </Signal>      <Signal>        <中文>模式</中文>        <变量>Mode</变量>        <DataType>int(32位)</DataType>        <地址>0x10010</地址>      </Signal>      <Signal>        <中文>最小</中文>        <变量>fHrmin_DcmsIc_m</变量>        <DataType>float(32位)</DataType>        <地址>0x10014</地址>      </Signal>    </SignalFormat>  </Device>  <Device>    <Name>大气</Name>    <SignalFormat>      <Name>1553格式</Name>      <Signal>        <中文>有效字</中文>        <变量>Word</变量>        <DataType>unsigned short(16位)</DataType>        <地址>0x10018</地址>        <属性>          <字段>            <中文>高有效</中文>            <低位>15</低位>            <高位>15</高位>            <含义>1="有效";0="无效"</含义>          </字段>          <字段>            <中文>速有效</中文>            <低位>14</低位>            <高位>14</高位>            <含义>1="有效";0="无效"</含义>          </字段>        </属性>      </Signal>      <Signal>        <中文>高(Hp)</中文>        <变量>Hp</变量>        <DataType>short int(16位)</DataType>        <MSBEnable>1</MSBEnable>        <MSBValue>16384</MSBValue>        <MSB>14</MSB>        <LSB>0</LSB>        <地址>0x1001a</地址>      </Signal>    </SignalFormat>    <SignalFormat>      <Name>物理量</Name>      <Signal>        <中文>高有效</中文>        <变量>Valid</变量>        <DataType>int(32位)</DataType>        <地址>0x1001c</地址>      </Signal>      <Signal>        <中文>速</中文>        <变量>Valid</变量>        <DataType>int(32位)</DataType>        <地址>0x10020</地址>      </Signal>      <Signal>        <中文>高</中文>        <变量>fHr</变量>        <DataType>float(32位)</DataType>        <地址>0x10024</地址>      </Signal>    </SignalFormat>  </Device></Config_File> 



[解决办法]
C# code
private void XmlOperation_Load(object sender, EventArgs e)        {            path = AppDomain.CurrentDomain.BaseDirectory + @"NameList.xml";            xml.Load(path);//加载xml文件            bindTvXml();        }        /// <summary>        /// 绑定TreeView        /// </summary>        private void bindTvXml()        {            for (int i = 0; i < xml.DocumentElement.ChildNodes.Count; i++)            {                XmlNode Xnode = xml.DocumentElement.ChildNodes[i];                TreeNode node = new TreeNode();                node.Text = Xnode.Attributes["name"].Value;                node.Tag = Xnode;                bindChildNode(node, Xnode);//绑定子节点                TvXml.Nodes.Add(node);                TvXml.HideSelection = false;            }        }                /// <summary>        /// 递归绑定子节点        /// </summary>        /// <param name="node"></param>        /// <param name="xml"></param>        private void bindChildNode(TreeNode node, XmlNode xml)        {            for (int i = 0; i < xml.ChildNodes.Count; i++)            {                TreeNode Childnode = new TreeNode();                XmlNode ChildXml = xml.ChildNodes[i];                Childnode.Text = ChildXml.Value;                Childnode.Name = "1";                Childnode.Tag = xml.ChildNodes[i];                if (ChildXml.HasChildNodes)                {                    if (ChildXml.ChildNodes[0].NodeType == XmlNodeType.Text)                        Childnode.Text = ChildXml.ChildNodes[0].InnerText;                    else                        bindChildNode(Childnode, ChildXml);                }                node.Nodes.Add(Childnode);            }                   } 

热点排行