要操作的xml文件:
<?xml version="1.0" encoding="utf-8" ?> <DetectionRoot> <Project> <ProjectItem> <ProjectCode><![CDATA[all]]></ProjectCode> <ProjectName><![CDATA[全部]]></ProjectName> </ProjectItem> <ProjectItem> <ProjectCode><![CDATA[site01]]></ProjectCode> <ProjectName><![CDATA[网站01]]></ProjectName> <Server> <ServerIP><![CDATA[10.200.110.1]]></ServerIP> <ServerIP><![CDATA[10.200.110.2]]></ServerIP> <ServerIP><![CDATA[10.200.110.3]]></ServerIP> <ServerIP><![CDATA[10.200.110.5]]></ServerIP> <ServerIP><![CDATA[10.200.110.6]]></ServerIP> <ServerIP><![CDATA[10.200.110.7]]></ServerIP> </Server> <Page> <PageItem> <PageName>首页</PageName> <PageUrl><![CDATA[/index.htm]]></PageUrl> </PageItem> <PageItem> <PageName>首页1</PageName> <PageUrl><![CDATA[/index1.htm]]></PageUrl> </PageItem> <PageItem> <PageName>首页2</PageName> <PageUrl><![CDATA[/index2.htm]]></PageUrl> </PageItem> </Page> </ProjectItem> <ProjectItem> <ProjectCode><![CDATA[site02]]></ProjectCode> <ProjectName><![CDATA[网站02]]></ProjectName> <Server> <ServerIP><![CDATA[10.1.110.1]]></ServerIP> <ServerIP><![CDATA[10.1.110.2]]></ServerIP> <ServerIP><![CDATA[10.1.110.3]]></ServerIP> <ServerIP><![CDATA[10.1.110.4]]></ServerIP> <ServerIP><![CDATA[10.1.110.5]]></ServerIP> </Server> <Page> <PageItem> <PageName>首页</PageName> <PageUrl><![CDATA[/index.htm]]></PageUrl> </PageItem> <PageItem> <PageName>首页01</PageName> <PageUrl><![CDATA[/index1.htm]]></PageUrl> </PageItem> <PageItem> <PageName>首页02</PageName> <PageUrl><![CDATA[/index2.htm]]></PageUrl> </PageItem> </Page> </ProjectItem> <ProjectItem> <ProjectCode><![CDATA[site03]]></ProjectCode> <ProjectName><![CDATA[wap站]]></ProjectName> <Server> <ServerIP><![CDATA[10.1.201.1]]></ServerIP> <ServerIP><![CDATA[10.1.201.2]]></ServerIP> <ServerIP><![CDATA[10.1.201.3]]></ServerIP> <ServerIP><![CDATA[10.1.201.4]]></ServerIP> </Server> <Page> <PageItem> <PageName>首页</PageName> <PageUrl><![CDATA[/index.aspx]]></PageUrl> </PageItem> <PageItem> <PageName>文章页1</PageName> <PageUrl><![CDATA[/article-001.htm]]></PageUrl> </PageItem> <PageItem> <PageName>文章页2</PageName> <PageUrl><![CDATA[/article-001.htm]]></PageUrl> </PageItem> </Page> </ProjectItem> <ProjectItem> <ProjectCode><![CDATA[test]]></ProjectCode> <ProjectName><![CDATA[测试内网wap站]]></ProjectName> <Server> <ServerIP><![CDATA[192.168.1.150]]></ServerIP> <ServerIP><![CDATA[192.168.1.150]]></ServerIP> <ServerIP><![CDATA[192.168.1.150]]></ServerIP> <ServerIP><![CDATA[192.168.1.150]]></ServerIP> </Server> <Page> <PageItem> <PageName>首页</PageName> <PageUrl><![CDATA[/index.aspx]]></PageUrl> </PageItem> <PageItem> <PageName>文章页01</PageName> <PageUrl><![CDATA[/article-001.htm]]></PageUrl> </PageItem> <PageItem> <PageName>文章页02</PageName> <PageUrl><![CDATA[/article-001.htm]]></PageUrl> </PageItem> </Page> </ProjectItem> </Project> </DetectionRoot>
操作上面xml的C#
public string xmlPath = AppDomain.CurrentDomain.BaseDirectory.TrimEnd('\\') + @"\PageConfig.xml";
/// <summary> /// 初始化项目的下拉列表 /// </summary> private void SetProjectCommboBox() { try { var xDoc2 = XDocument.Load(xmlPath); var query2 = from item in xDoc2.Element("DetectionRoot").Element("Project").Elements("ProjectItem") select new ProjectItem { ProjectName = item.Element("ProjectName").Value, ProjectCode = item.Element("ProjectCode").Value }; cbxproject.DataSource = query2.ToList(); cbxproject.DisplayMember = "ProjectName"; cbxproject.ValueMember = "ProjectCode"; } catch (Exception ex) { string ExceptionContent = string.Format("读取PageConfig.xml的ProjectItem节点抛出错误: Exception Message={0},TraceStack={1},Source={2}", ex.Message, ex.StackTrace, ex.Source); MessageBox.Show(ExceptionContent); return; } }
/// <summary> /// 根据所选择的项目,读取对应的服务器IP列表给服务器列表文本框 /// </summary> /// <param name="projectCode"></param> /// <returns></returns> private void SetServerList(string projectCode) { try { var xDoc1 = XDocument.Load(xmlPath); var query1 = from item in xDoc1.Element("DetectionRoot").Element("Project").Elements("ProjectItem") where item.Element("ProjectCode").Value == projectCode select item; var query2 = from item in query1.Elements("Server").Elements("ServerIP") select new ServerItem { ServerIP = item.Value }; StringBuilder ipAppend = new StringBuilder(); foreach (ServerItem ip in query2.ToList()) { if (ipAppend.Length == 0) { ipAppend.AppendFormat("{0}{1}", ip.ServerIP, string.Empty); } else { ipAppend.AppendFormat("{0}{1}", Environment.NewLine, ip.ServerIP); } } txtServerList.Text = ipAppend.ToString(); } catch (Exception ex) { string ExceptionContent = string.Format("读取PageConfig.xml的ServerItem节点抛出错误: Exception Message={0},TraceStack={1},Source={2}", ex.Message, ex.StackTrace, ex.Source); MessageBox.Show(ExceptionContent); return; } }
/// <summary> /// 根据所选择的项目,读取对应项目的所有页面地址给数据表格对象 /// </summary> /// <param name="projectCode"></param> private void SetPageUrlDataGrid(string projectCode) { try { var xDoc1 = XDocument.Load(xmlPath); if (projectCode.Equals("all", StringComparison.CurrentCultureIgnoreCase)) { var query1 = from item in xDoc1.Element("DetectionRoot").Element("Project").Elements("ProjectItem").Elements("Page").Elements("PageItem") select new PageItem { ProjectName = item.Parent.Parent.Element("ProjectName").Value, ProjectCode = item.Parent.Parent.Element("ProjectCode").Value, PageName = item.Element("PageName").Value, PageUrl = item.Element("PageUrl").Value }; dgvurl.DataSource = query1.ToList(); } else { var query1 = from item in xDoc1.Element("DetectionRoot").Element("Project").Elements("ProjectItem").Elements("Page").Elements("PageItem") where item.Parent.Parent.Element("ProjectCode").Value == projectCode select new PageItem { ProjectName = item.Parent.Parent.Element("ProjectName").Value, ProjectCode = item.Parent.Parent.Element("ProjectCode").Value, PageName = item.Element("PageName").Value, PageUrl = item.Element("PageUrl").Value }; dgvurl.DataSource = query1.ToList(); } } catch (Exception ex) { string ExceptionContent = string.Format("读取PageConfig.xml的PageItem节点抛出错误: Exception Message={0},TraceStack={1},Source={2}", ex.Message, ex.StackTrace, ex.Source); MessageBox.Show(ExceptionContent); return; //throw; } }
这些这操作都是经过项目检验的,并且是正确的。
浙公网安备 33010602011771号