4

我正在检索一些包含国家的 XML 数据以及许多其他内容,并且我想将国家名称链接到它的缩写,以便将它们与 famfamfam 标志匹配。

请参见下面的示例:

    $('Result',xml).each(function(i) {
        var $this = $(this),
        user = $this.attr("Username"),
        country = $this.attr("Country"),

所以变量 country 将获取国家名称,那么我怎样才能将 247 个潜在国家动态更改为它的缩写。

以下是缩写列表的一部分和完整的国家名称:

>FI  FINLAND
>FJ  FIJI
>FK  FALKLAND ISLANDS (MALVINAS)
>FM  MICRONESIA, FEDERATED STATES OF
>FO  FAROE ISLANDS
>FR  FRANCE
>FX  FRANCE, METROPOLITAN
>GA  GABON
>GB  UNITED KINGDOM
>GE  GEORGIA
4

1 回答 1

4

您需要问自己这个缩写是否以某种方式存储在您的 xml 响应中的问题。我认为不是,在这种情况下,您需要在 JavaScript 中创建一个对象,如下所示:

var countryCodes = {
   'NL' : 'Netherlands',
   'FR' : 'France'
   // and all the other countries
}
var inverseCountryCodes = {};
for(i in countryCodes) {
   inverseCountryCodes[countryCodes[i]] = i;
}

注意:这实际上意味着您将有一大段代码创建 countryCodes-array,它或多或少是一个数据库。请考虑放入一个单独的 js 文件,称为 country.js 或其他文件,并将 if 包含在第一个 javascript 文件中。

现在您可以简单地从 countryCode 翻译为真实姓名,反之亦然,即

countryCodes['NL']

将导致“荷兰”和

inverseCountryCodes['France']

将导致“FR”。

更好的选择是确定一个国家最稳定的表示是什么,我认为这将是一个国家代码,因为名称在不同语言中具有不同的值。这样,您可以考虑将 countryCode 作为 xml 返回(服务器端)。

任重道远,祝你好运!

注意:

我刚刚发现:http ://www.geonames.org/export/ws-overview.html

这是一个很好的网络请求列表,您可以执行这些请求,以获取各种地理信息。countryInfo 似乎与您想要的完全相反,但它仍然可以帮助您。例如,通过这种方式您可以获得有关德国的信息。通过让服务器使用代码而不是名称进行响应,这可能正是您所需要的!

http://api.geonames.org/countryInfoJSON?formatted=true&lang=it&country=DE&username=demo&style=full

如果您将使用它,请不要忘记创建自己的 api.geoname.org 帐户,而不是使用演示用户名;)

于 2012-05-28T11:39:51.017 回答