zoukankan      html  css  js  c++  java
  • 用WCF服务来动态的获取本地XML省市区文档

    建立一个WCF服务。

      1 using ClassLibrary;
      2 using System;
      3 using System.Collections.Generic;
      4 using System.Linq;
      5 using System.Runtime.Serialization;
      6 using System.ServiceModel;
      7 using System.ServiceModel.Web;
      8 using System.Text;
      9 using System.Xml;
     10 
     11 namespace AreaService
     12 {
     13     // 注意: 使用“重构”菜单上的“重命名”命令,可以同时更改代码、svc 和配置文件中的类名“Service1”。
     14     // 注意: 为了启动 WCF 测试客户端以测试此服务,请在解决方案资源管理器中选择 Service1.svc 或 Service1.svc.cs,然后开始调试。
     15     public class Service1 : IService1
     16     {
     17         public static class api
     18         {
     19             public static XmlDocument cacheAreaDocument { get; set; }
     20             public static XmlDocument cacheUrlMapDocument { get; set; }
     21         }
     22         public List<ClassLibrary.Area> GetProvince()
     23         {
     24             XmlDocument xd = api.cacheAreaDocument;
     25             if (xd == null)
     26             {
     27                 xd = new XmlDocument();
     28                 xd.Load(AppDomain.CurrentDomain.BaseDirectory + "/data/ChinaArea.xml");
     29             }
     30             XmlNode xn = xd.SelectSingleNode("area");
     31             List<Area> areas = new List<Area>();
     32             //等效于 XmlNode xn = xd.DocumentElement;
     33             foreach (XmlNode province in xn.ChildNodes)
     34             {
     35                 XmlElement proEl = (XmlElement)province;
     36                 areas.Add(new Area { province = proEl.GetAttribute("province"), provinceID = proEl.GetAttribute("provinceID") });
     37             }
     38             return areas;
     39         }
     40         public List<ClassLibrary.Area> GetCityByProvinceId(string provinceID)
     41         {
     42             XmlDocument xd = api.cacheAreaDocument;
     43             if (xd == null)
     44             {
     45                 xd = new XmlDocument();
     46                 xd.Load(AppDomain.CurrentDomain.BaseDirectory + "/data/ChinaArea.xml");
     47             }
     48             XmlNode xn = xd.SelectSingleNode("area");
     49             List<ClassLibrary.Area> areas = new List<ClassLibrary.Area>();
     50             foreach (XmlNode province in xn.ChildNodes)
     51             {
     52                 XmlElement pro = (XmlElement)province;
     53                 if (pro.GetAttribute("provinceID") == provinceID)
     54                 {
     55                     foreach (var cityNd in pro.ChildNodes)
     56                     {
     57                         XmlElement city = (XmlElement)cityNd;
     58                         areas.Add(new ClassLibrary.Area { City = city.GetAttribute("City"), CityID = city.GetAttribute("CityID") });
     59                     }
     60                 }
     61             }
     62             if (xn.ChildNodes == null || xn.ChildNodes.Count <= 0)
     63             {
     64                 areas.Add(new ClassLibrary.Area { City = "", CityID = "" });
     65             }
     66             return areas;
     67         }
     68 
     69         public List<ClassLibrary.Area> GetPieceareaByCityID(string CityID)
     70         {
     71             List<Area> areas = new List<Area>();
     72             if (CityID.Trim() == "")
     73             {
     74                 areas.Add(new Area { Piecearea = "", PieceareaID = "" });
     75                 return areas;
     76             }
     77             XmlDocument xd = api.cacheAreaDocument;
     78             if (xd == null)
     79             {
     80                 xd = new XmlDocument();
     81                 xd.Load(AppDomain.CurrentDomain.BaseDirectory + "/data/ChinaArea.xml");
     82             }
     83             XmlNode xn = xd.SelectSingleNode("area");
     84 
     85             //等效于 XmlNode xn = xd.DocumentElement;
     86             foreach (XmlNode province in xn.ChildNodes)
     87             {
     88                 foreach (XmlNode cityNd in province.ChildNodes)
     89                 {
     90                     if ((cityNd as XmlElement).GetAttribute("CityID") == CityID)
     91                     {
     92                         foreach (var pieceareaNd in cityNd.ChildNodes)
     93                         {
     94                             XmlElement piecearea = (XmlElement)pieceareaNd;
     95                             areas.Add(new Area { Piecearea = piecearea.GetAttribute("Piecearea"), PieceareaID = piecearea.GetAttribute("PieceareaID") });
     96                         }
     97                     }
     98 
     99                 }
    100             }
    101             return areas;
    102         }
    103     }
    104 }


    建立后生成。然后在前端添加服务引用。

    实例化。

     1 using System;
     2 using System.Collections.Generic;
     3 using System.ComponentModel;
     4 using System.Data;
     5 using System.Drawing;
     6 using System.Linq;
     7 using System.Text;
     8 using System.Windows.Forms;
     9 
    10 namespace 动态的获取省市
    11 {
    12     public partial class Form1 : Form
    13     {
    14         public Form1()
    15         {
    16             InitializeComponent();
    17             sa = new AreaService.Service1Client();
    18         }
    19         AreaService.Service1Client sa;
    20         private void Form1_Load(object sender, EventArgs e)
    21         {
    22             comboBox1.DataSource = sa.GetProvince();
    23             comboBox1.DisplayMember = "province";
    24             comboBox1.ValueMember = "provinceID";
    25             comboBox1_SelectedIndexChanged(sender,e);
    26             comboBox2_SelectedIndexChanged(sender, e);
    27             comboBox3_SelectedIndexChanged(sender, e);
    28 
    29         }
    30         /// <summary>
    31         /// 获取市
    32         /// </summary>
    33         /// <param name="sender"></param>
    34         /// <param name="e"></param>
    35         private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
    36         {
    37             comboBox2.DataSource = sa.GetCityByProvinceId(comboBox1.SelectedValue+"");
    38             comboBox2.DisplayMember = "City";
    39             comboBox2.ValueMember = "CityID";
    40         }
    41        
    42         private void comboBox2_SelectedIndexChanged(object sender, EventArgs e)
    43         {
    44             comboBox3.DataSource = sa.GetPieceareaByCityID(comboBox2.SelectedValue+"");
    45             comboBox3.DisplayMember = "Piecearea";
    46             comboBox3.ValueMember = "PieceareaID";
    47         }
    48       
    49 
    50         private void comboBox3_SelectedIndexChanged(object sender, EventArgs e)
    51         {
    52 
    53         }
    54 
    55         private void button1_Click(object sender, EventArgs e)
    56         {
    57 
    58         }
    59 
    60 
    61     }
    62 }

    这是窗体设计代码:

    namespace 动态的获取省市
    {
        partial class Form1
        {
            /// <summary>
            /// 必需的设计器变量。
            /// </summary>
            private System.ComponentModel.IContainer components = null;
    
            /// <summary>
            /// 清理所有正在使用的资源。
            /// </summary>
            /// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
            protected override void Dispose(bool disposing)
            {
                if (disposing && (components != null))
                {
                    components.Dispose();
                }
                base.Dispose(disposing);
            }
    
            #region Windows 窗体设计器生成的代码
    
            /// <summary>
            /// 设计器支持所需的方法 - 不要
            /// 使用代码编辑器修改此方法的内容。
            /// </summary>
            private void InitializeComponent()
            {
                this.label1 = new System.Windows.Forms.Label();
                this.label2 = new System.Windows.Forms.Label();
                this.label3 = new System.Windows.Forms.Label();
                this.comboBox1 = new System.Windows.Forms.ComboBox();
                this.comboBox2 = new System.Windows.Forms.ComboBox();
                this.comboBox3 = new System.Windows.Forms.ComboBox();
                this.button1 = new System.Windows.Forms.Button();
                this.SuspendLayout();
                // 
                // label1
                // 
                this.label1.AutoSize = true;
                this.label1.Location = new System.Drawing.Point(40, 50);
                this.label1.Name = "label1";
                this.label1.Size = new System.Drawing.Size(29, 12);
                this.label1.TabIndex = 0;
                this.label1.Text = "省:";
                // 
                // label2
                // 
                this.label2.AutoSize = true;
                this.label2.Location = new System.Drawing.Point(40, 111);
                this.label2.Name = "label2";
                this.label2.Size = new System.Drawing.Size(29, 12);
                this.label2.TabIndex = 1;
                this.label2.Text = "市:";
                // 
                // label3
                // 
                this.label3.AutoSize = true;
                this.label3.Location = new System.Drawing.Point(40, 175);
                this.label3.Name = "label3";
                this.label3.Size = new System.Drawing.Size(29, 12);
                this.label3.TabIndex = 2;
                this.label3.Text = "区:";
                // 
                // comboBox1
                // 
                this.comboBox1.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
                this.comboBox1.FormattingEnabled = true;
                this.comboBox1.Location = new System.Drawing.Point(87, 47);
                this.comboBox1.Name = "comboBox1";
                this.comboBox1.Size = new System.Drawing.Size(121, 20);
                this.comboBox1.TabIndex = 3;
                this.comboBox1.SelectedIndexChanged += new System.EventHandler(this.comboBox1_SelectedIndexChanged);
                // 
                // comboBox2
                // 
                this.comboBox2.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
                this.comboBox2.FormattingEnabled = true;
                this.comboBox2.Location = new System.Drawing.Point(87, 108);
                this.comboBox2.Name = "comboBox2";
                this.comboBox2.Size = new System.Drawing.Size(121, 20);
                this.comboBox2.TabIndex = 4;
                this.comboBox2.SelectedIndexChanged += new System.EventHandler(this.comboBox2_SelectedIndexChanged);
                // 
                // comboBox3
                // 
                this.comboBox3.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
                this.comboBox3.FormattingEnabled = true;
                this.comboBox3.Location = new System.Drawing.Point(87, 172);
                this.comboBox3.Name = "comboBox3";
                this.comboBox3.Size = new System.Drawing.Size(121, 20);
                this.comboBox3.TabIndex = 5;
                this.comboBox3.SelectedIndexChanged += new System.EventHandler(this.comboBox3_SelectedIndexChanged);
                // 
                // button1
                // 
                this.button1.Location = new System.Drawing.Point(87, 226);
                this.button1.Name = "button1";
                this.button1.Size = new System.Drawing.Size(75, 23);
                this.button1.TabIndex = 6;
                this.button1.Text = "确  定";
                this.button1.UseVisualStyleBackColor = true;
                this.button1.Click += new System.EventHandler(this.button1_Click);
                // 
                // Form1
                // 
                this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
                this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
                this.ClientSize = new System.Drawing.Size(261, 272);
                this.Controls.Add(this.button1);
                this.Controls.Add(this.comboBox3);
                this.Controls.Add(this.comboBox2);
                this.Controls.Add(this.comboBox1);
                this.Controls.Add(this.label3);
                this.Controls.Add(this.label2);
                this.Controls.Add(this.label1);
                this.Name = "Form1";
                this.Text = "Form1";
                this.Load += new System.EventHandler(this.Form1_Load);
                this.ResumeLayout(false);
                this.PerformLayout();
    
            }
    
            #endregion
    
            private System.Windows.Forms.Label label1;
            private System.Windows.Forms.Label label2;
            private System.Windows.Forms.Label label3;
            private System.Windows.Forms.ComboBox comboBox1;
            private System.Windows.Forms.ComboBox comboBox2;
            private System.Windows.Forms.ComboBox comboBox3;
            private System.Windows.Forms.Button button1;
        }
    }
    

     效果如下:

  • 相关阅读:
    springboot应用docker部署调用phantomjs出现permission denied修复方法
    vue某单元格设置背景色
    vue编辑当行数据,弹窗赋值
    vue使用element-ui的el-input监听不了键盘事件解决
    js获取当前域名
    Jedis Redis 模糊匹配 取得 key 列表
    电脑启机时出windowssystem32driversootsafe64.sys
    Vue子组件调用父组件的方法
    Docker 连接mongodb
    Unsatisfied dependency expressed through field 'mongoTemplate'
  • 原文地址:https://www.cnblogs.com/jason-davis/p/4497097.html
Copyright © 2011-2022 走看看