当前位置: 首页 > news >正文

金阊网站建设原创文章代写

金阊网站建设,原创文章代写,免费cmsasp,制作一个网站数据库怎么做在前文《C#使用XML和Treeview结合实现复杂数据采集功能》中,使用Treeview展示了XML的数据,问题是如果在Treeview上进行了操作,怎样同步更改XML数据的内容呢? 这个问题看似简单,实现起来有一点小麻烦。 要实现的操作功能…

  在前文《C#使用XML和Treeview结合实现复杂数据采集功能》中,使用Treeview展示了XML的数据,问题是如果在Treeview上进行了操作,怎样同步更改XML数据的内容呢?

 

  这个问题看似简单,实现起来有一点小麻烦。

  要实现的操作功能:

  ⑴如果点击了Radio,即单选图标,需要在XML文档中找到该节点,将同级的所有节点的选择属性清空,然后将该节点的选择属性置为“true”。

  ⑵如果点击了Checkbox,即多选图标,需要在XML文档中找到该节点,然后将该节点的选择属性置为“true”。

  ⑶如果点击了textbook,即文本输入图标,需要在XML文档中找到该节点,然后改写该节点的value属性值。

  ⑷点击标签,只进行图标替换动作,不更改XML内容。

  ⑸只要点击Radio、Checkbox、textbook,都需要进行自动计算。自动计算规则:没有计算公式属性,那么父节点等于子节点的value之和,如果有计算公式,需要根据计算公式进行结果获取。

  这里记录解决⑴、⑵、⑶的代码实现。

  在treeView1_MouseDown(object sender, MouseEventArgs e)事件中的具体实现代码:

//在XML内容中进行操作,找到该子项目并修改子项目的属性值,就是修改XML文档的内容
//找到该节点
TreeNode SelectedNode =treeView1.GetNodeAt(e.X, e.Y);
//得到全路径名
string StrCurrentPath= SelectedNode.FullPath;
//找第一个"\"
int FirstIndex = StrCurrentPath.IndexOf("\\");
//找最后一个"\"
int LastIndex =StrCurrentPath.LastIndexOf("\\");
//得到在XML文档中父节点的全路径名称
string StrParentPath= StrCurrentPath.Substring(FirstIndex+1,LastIndex - FirstIndex -1);
//得到当前节点名称
string StrCurrentNodeName= StrCurrentPath.Substring(LastIndex+1);
//找到节点
XmlNode TargetNode = FindNodeAtXmlContent(XmlDoc.DocumentElement, StrParentPath);
//处理节点信息
HandleNodeInfoAtXmlContent(TargetNode, StrCurrentNodeName);
//保存处理后的XML文档内容
StrXmlContent = XmlDoc.OuterXml;

  查找函数,根据被查找的节点和路径找到该节点。

  一般情况下使用递归来进行查找,这里使用的循环:

  将路径进行拆解到一个字符串数组中,比如“\节点1\节点2\节点3\节点4”,拆解成"节点1"、"节点2"、“节点3”、“节点4”,先找“节点1”,然后依次找后面的,这样快。

  实现的代码:

        private XmlNode FindNodeAtXmlContent(XmlNode BeSearchedNode,string StrFullPath){XmlNode CurrentNode=BeSearchedNode;string[] StrPathAll= StrFullPath.Split('\\');foreach(string StrPath in StrPathAll){bool Finded= false;foreach(XmlNode xmlNode in CurrentNode.ChildNodes){if (xmlNode.Name.Trim()==StrPath.Trim()){Finded = true;CurrentNode= xmlNode;//找到对应的节点break;}}if(!Finded){return null;//没有找到对应的节点}}return CurrentNode;}

  处理函数,如果找到了父节点,就更改相关信息:

        private void HandleNodeInfoAtXmlContent(XmlNode ParentNode,string StrChildNodeName){XmlNode BeSelectChildNode =null;//根据父节点和子节点的名称(caption属性)处理XML文档if (ParentNode.Attributes["type"] != null){string StrNodeType = ParentNode.Attributes["type"].Value;if (StrNodeType=="Radio"){foreach(XmlNode ChildNode in ParentNode.ChildNodes){textBox2.Text += "节点caption:" + ChildNode.Attributes["caption"].Value+Environment.NewLine;//单选,先将父节点下的子节点的select属性全部删除if (ChildNode.Attributes["select"] != null){ChildNode.Attributes.Remove(ChildNode.Attributes["select"]);}//找到子节点if (ChildNode.Attributes["caption"].Value ==StrChildNodeName.Trim()){BeSelectChildNode = ChildNode;}}//添加select属性XmlAttribute SelectedAttr = XmlDoc.CreateAttribute("select");SelectedAttr.Value= "true";BeSelectChildNode.Attributes.Append(SelectedAttr);                    }if (StrNodeType == "Checkbox"){foreach (XmlNode ChildNode in ParentNode.ChildNodes){//多选,找到并添加select属性//找到子节点if (ChildNode.Attributes["caption"].Value == StrChildNodeName.Trim()){BeSelectChildNode = ChildNode;}}//添加select属性XmlAttribute SelectedAttr = XmlDoc.CreateAttribute("select");SelectedAttr.Value = "true";BeSelectChildNode.Attributes.Append(SelectedAttr);}if (StrNodeType == "Textbox"){foreach (XmlNode ChildNode in ParentNode.ChildNodes){//文本输入框,找到并更改value属性//找到子节点if (ChildNode.Attributes["caption"].Value == StrChildNodeName.Trim()){BeSelectChildNode = ChildNode;}}//更改value属性属性XmlAttribute SelectedAttr = XmlDoc.CreateAttribute("value");SelectedAttr.Value = StrCurrentTextboxValue;BeSelectChildNode.Attributes.Append(SelectedAttr);}}}

  通过上面的代码,就可以做到Treeview的操作与实际XML文档内容的同步更新和一致。

http://www.hkea.cn/news/252116/

相关文章:

  • 用卫生纸做的礼物街网站免费网页空间到哪申请
  • 手游网站做cpc还是cpm广告号厦门网页搜索排名提升
  • 人个做外贸用什么网站好宁波百度seo点击软件
  • 诈骗网站怎么做的企业网站seo案例分析
  • 如何做网站接口湖南营销型网站建设
  • 进入兔展网站做PPt软文营销ppt
  • app网站新闻危机公关
  • 东莞关键词优化实力乐云seo南宁seo外包服务商
  • 做网站都是用源码么免费注册个人网站不花钱
  • 建设网站需要两种服务支持官网设计公司
  • 安庆做网站seo建站收费地震
  • 绵阳住房和城市建设局网站官网seo排名优化联系13火星软件
  • 网站开发建设费用关键词异地排名查询
  • 网站建设企业电话广州优化疫情防控举措
  • 重庆模板网站建设百度网站域名注册
  • 安徽建设厅网站地址网络广告推广方式
  • 门户网站内容管理建设方案企业关键词优化推荐
  • 北京网站建设公司飞沐小学生一分钟新闻播报
  • 企业网站建设申请域名seo赚钱
  • 2017网站开发前景百度网盘资源链接入口
  • 平面广告设计主题seo是怎么优化上去
  • 正规网站制作公司哪家好四年级写一小段新闻
  • 济南网站建设安卓版快手seo
  • java开发兼职网站开发线上推广平台
  • 北京网站建设开发公司网站自动收录
  • wordpress最多多少用户seo基础知识
  • 湘潭做网站 去磐石网络b站推出的短视频app哪个好
  • 宿迁做网站的公司有人看片吗免费观看视频
  • 什么人最需要建设网站淘宝运营一般要学多久
  • 海南网站优化东莞免费建站公司