当前位置:编程学习 > XML/UML >>

身份证编码合法性检测(基于XML数据)

中国的居民身份证编码格式为:2位一级行政区代码;2位二级行政区代码;2位三级行政区代码;8位出生日期(年月日);3位识别码;1位校验码。其中校验码执行的是中华人民共和国国家标准GB11643-1999,即ISO7064:1983.MOD 11-2。
    前6位的行政区划代码包含的信息只能存储于数据文件中。我看到许多例子都使用数据库或文本文件对其存储,查询起来很不方便。而使用Microsoft.XMLDOM则简单易行:首先将身份证数据转换为XML格式,然后通过XPath进寻查询,体积小,速度快,Client或Server均可执行,也可通过AJAX访问;而不像数据库,只能在Server执行。以下是全部JavaScript代码和XML生成算法的C#代码。
1、HTML文件:
1. <html xmlns="http://www.w3.org/1999/xhtml">
2. <head>
3. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
4. <title>居民身份证编码合法性检测(基于客户端XML数据)</title>
5. <style type="text/css">
6. body, table { 
7.     font-family:宋体; 
8.     font-size:9pt; 
9. } 
10. table, td { 
11.     border-width:1px; 
12.     border-style:solid; 
13.     border-color:#000000; 
14. } 
15. td { 
16.     height:30; 
17. } 
18. input { 
19.     width:200px; 
20.     height:22px; 
21. } 
22. </style>
23. <script type="text/javascript" src="CheckChineseID.js"></script>
24. <script type="text/javascript">
25. function xmlLoad() { 
26.     var xmlDoc = null; 
27.     try { 
28.         if (window.ActiveXObject) //IE 
29.             xmlDoc = new ActiveXObject("Microsoft.XMLDOM"); 
30.         else if (document.implementation.createDocument) //Mozilla, Firefox, Opera, etc. 
31.             xmlDoc = document.implementation.createDocument("", "", null); 
32.         xmlDoc.async = false; 
33.         xmlDoc.load("ChineseID.xml"); 
34.         xmlDoc.setProperty("SelectionLanguage", "XPath"); 
35.     } 
36.     finally { 
37.         return xmlDoc; 
38.     } 
39. } 
40. var xmlDoc = xmlLoad(); 
41. function show() { 
42.     if (xmlDoc == null) 
43.         alert(navigator.appName + "不支持XML对象,程序无法运行!"); 
44.     else { 
45.         var result = checkId(id.value, xmlDoc); 
46.         if (typeof result == "string") { 
47.             t0.innerHTML = result; 
48.             t0.style.color = "#FF0000"; 
49.             t1.innerHTML = t2.innerHTML = t3.innerHTML = t4.innerHTML = t5.innerHTML = "N/A"; 
50.         } 
51.         else { 
52.             t0.innerHTML = "检测通过!"; 
53.             t0.style.color = "#008000"; 
54.             t1.innerHTML = result[0]; 
55.             t2.innerHTML = result[1]; 
56.             t3.innerHTML = result[2]; 
57.             t4.innerHTML = result[3] + "年" + result[4] + "月" + result[5] + "日【" + result[6] + "岁】"; 
58.             t5.innerHTML = result[7] + "【" + result[8] + "】"; 
59.         } 
60.         var blink = 0; 
61.         var blinkId = setInterval(function () { 
62.             blink % 2 == 0 ? t0.style.backgroundColor = "#FFFFC0" : t0.style.backgroundColor = "#FFFFFF"; 
63.             if (blink++ == 5) clearInterval(blinkId); 
64.         }, 200); 
65.     } 
66. } 
67. </script>
68. </head>
69. <body>
70. <p align="center">
71. <small><sub>居民</sub></small>身份证编码合法性检测(基于客户端XML数据)<br /><br />
72. 白宇 - 梦辽软件工作室 - 博讯网络有限责任公司<br />
73. Baiyu - Mengliao Software Studio - Bosun Network Co., Ltd.<br />
74. 2012.03.02</p>
75. <center>
76. <table cellpadding="5" cellspacing="0" width="320">
77.     <tr>
78.         <td width="100">身份证号码</td>
79.         <td align="center">
80.             <input type="text" maxlength="18" id="id" value="请输入18位身份证号码" style="color:#CCCCCC"
81.                 onfocus="if(this.value=='请输入18位身份证号码'){this.value='';this.style.color='#000000';}"
82.                 onblur="if(this.value==''){this.value='请输入18位身份证号码';this.style.color='#CCCCCC';}"
83.                 ondblclick="clipboardData.setData('Text','150722201203020010');alert('示例:150722201203020010\n\n该示例已复制到剪贴板!');"
84.                 onkeypress="if(event.keyCode==13) btn.click()" />
85.         </td>
86.     </tr>
87.     <

补充:Web开发 , 其他 ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,