要操作的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>
View Code

操作上面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;
            }

        }

这些这操作都是经过项目检验的,并且是正确的。

posted on 2016-01-19 17:32  踏歌&而行  阅读(231)  评论(0)    收藏  举报