一个包含国家和地区列表的地址助手类






3.50/5 (2投票s)
此类和 XML 文件可用于实现任何基本地址构建器的“国家/地区”和“州”部分的下拉列表。
引言
在开发需要地址辅助类的应用程序时,我认为找到一些构建地址所需的必要数据(即,我们在许多网站上经常看到的国家/地区及其州列表)可能很容易。 当我发现从注册表中获取国家/地区列表的模块时,真是太酷了。 对我而言,作为 Windows 应用程序和 C# 的新手,剩下的唯一事情就是获取每个国家/地区的州列表并将其添加到代码中。
由于它在很多地方使用,我自动假设该文件会在附近,或者可能是一个数据库或其他什么东西,我可以用来将其与我的应用程序集成,但是嘿,我没有找到任何这样的文件或数据库。 现在,可能是我搜索的时间不够长,或者可能是我使用了错误的搜索字符串而错过了它,但无论如何,搜索结果为空。 但是,我确实找到了世界各国列表,以及它们下面的州列表,需要将它们放在一起。
所以基本上,这种需求,加上拥有这样一个文件的固执,让我进行了良好的战斗并将其放在一起。 我希望它可以节省大量时间,并减少很多人搜索时的挫败感。
背景
您可能需要学习 XML 的基础知识,并且假定您对 C# 有内在的了解。
使用代码
地址辅助类是通过理解和重写我在网上找到的代码示例而开发的,但我必须赞扬 XML 文件。 请随意使用它,但请保留 XML 文件开头的作者注释。 我不得不花很多时间和耐心在这上面,所以你知道这是怎么回事。
此类提供了一些方法,用于读取 Microsoft 电话注册表条目中找到的“国家/地区”列表并将其转换为更易于处理的格式,还提供了一些方法,用于读取和使用 XML 文件,以根据传入函数的国家/地区名称获取州。
这里最重要的是 XML 文件。
我使用 C# 编写代码,并且可能有更有效的实现,请随意使用。 如果您正在使用该代码,则需要 .NET 2.0,因为 ReadToNextSibling()
函数可能与较低版本不兼容。
特别说明
重新使用时,请务必更改代码的以下方面
- 在
readXML
函数中用于访问文件的路径 - 命名空间
readXML(string filename, string country)
{
//Some code
reader = XmlTextReader.Create(Application.Startup + filename, settings);
//Some code
}
该代码注释非常完善,并且选择了变量名称以方便阅读,因此应该不是问题。 无论如何,这是地址辅助类中值得注意的函数的简短描述。
//This function is called once in the beginning to fill the values from the
//registry and convert it to a key value pair of string(Country name) and
//int(Country Telephone code)
public static void readCountriesRegistry()
//You can call this function from inside this class from the function
public static string[] getCountriesList()
//In which case, you might want to make the readCountriesRegistry() function
//private, or you can call the two functions one after the other in the above
//order... suit yourself.
无论如何,我将此弃用的函数留在类中,以防有人想进行一些弗兰肯斯坦研究
//IGNORE THIS FUNCTION
private void StatesList()
//If you want to experiment with reading from a text file, you can expand this
//Function, otherwise neglect it.
如果您正在处理电话号码,则另一个简短而有用的函数
//Send in a country, get the telephony country code :)
public static string getCountryCode(string country)
我们已经稍微谈论了函数 readXML
。 它接受包含国家/地区-州树的 XML 文件的文件名。
public static string[] readXML(string filename, string country)
XML 文件非常简单但有效。 它具有根元素“Countries”,以及许多“Country”类型的子元素。 每个国家/地区还具有许多带有“state”标签的子元素。 结构如下
<!DOCTYPE Countries [
<!ELEMENT Countries (Country*)>
<!ELEMENT Country (state*) >
<!ATTLIST Country name CDATA #REQUIRED >
<!ELEMENT state (#PCDATA)>
]>
就是这样! 现在它工作得很好。 如果您发现任何错误或改进,请告诉我,我会很乐意调查。 我希望你觉得它有用。
关注点
真令人惊讶的是我没有找到这个,但这是一个很好的经验。 我严格来说是一个 OO 人,但这件事让 XML 在我的腰带上又多了一个缺口。
唯一的事情是,处理 XML 文件的组装需要惊人的耐心。 如果你看到该文件,你就会知道:)
历史
该代码现在适用于国家和州,但我计划在我有时间时将其扩展到包括城市。 如果有人想继续进行这场伟大的战斗并帮助我,我将很高兴!
祝您编码愉快!