2010-12-19 92 views
0

我正在使用JQuery和XML。使用JQuery显示XML值

我有下面的XML格式。

资源XML:

<?xml version="1.0"?> 
<root xmlns:link="http://www.example.com/tridion"> 
    <data name="LoginAccount" tcm="tcm:233-191754" type="Text"> 
     <value>Login to your Account</value> 
    </data> 
    <data name="Airport" tcm="tcm:233-191754" type="Text"> 
     <value>Airport</value> 
    </data> 
    <data name="BusinessClass" tcm="tcm:233-191754" type="Text"> 
     <value>Business</value> 
    </data> 
</root> 

现在我有JQuery的地方,我希望得到这些值加载第一,然后在页面还使用它们,例如。

jQuery代码示例:

// Dialog   
    $('#LoginLink').click(function(){ 
     $('#Login').dialog({ 
      autoOpen: true, 
      width: 450, 
      modal: true, 
      title: 'Login to your Account' 
     }); 
     if($('#Login').is(':visible')) { 
      hideSelect(); 
     } else { 
      showSelect(); 
     } 
    }); 

在上面jQuery代码文本“登录您的账户”应该来自我的资源XML作为我的应用程序是多语言。

我期待在JQuery中创建这样的函数,我只需传递名称属性的值,并从XML中获取实际值,比如说。

getDataFromResourceFile( '登录账号');应显示'登录到您的帐户'

请建议!

回答

0

使用此乌尔XML文档加载到一个变量:

var xmlData; 
$.ajax({ 
    type: "GET", 
    url: "resources.xml",// your xml file path 
    dataType: "xml", 
    success: function(xml) { 
    xmlData = xml;// set the returned xml into a global variable 
    } 
}); 

然后

function getDataFromResourceFile(resourceKey) 
{ 
    return $(xmlData).find('data[name=' + resourceKey + '] value').text(); 
} 

这将做它为您的XML文件。在使用XML数据之前,您可能需要检查XML数据是否已加载到变量(xmlData)中。

编辑

编辑从服务器加载XML如果没有找到它。

<script type="text/javascript"> 
    var xmlData; 
    function getDataFromResourceFile(key) 
    { 
     if (xmlData == null) 
     { 
      $.ajax({ 
       type: "GET", 
       url: "resources.xml", 
       dataType: "xml", 
       success: function (xml) 
       { 
        xmlData = xml; 
        return $(xmlData).find('data[name=' + key + '] value').text(); 
       } 
      }); 
     } 
     else 
     { 
      return $(xmlData).find('data[name=' + key + '] value').text(); 
     } 
    } 
</script> 
+0

谢谢@Omkar,我不明白你在说什么“在使用它之前,你可能需要检查XML数据是否已经加载到变量(xmlData)中。”你能举个例子来建议吗? – 2010-12-19 10:08:49

+0

因为我们是通过一个Ajax请求(异步)加载XML可能因此发生该文件尚未收到,我们尝试使用$(XMLDATA).find(“数据[名称=” +获取ResourceKey +“]值')。文本();这会导致错误,因为xmlData将为空。 – Omkar 2010-12-19 10:14:15

+0

那么,这是什么类型的检查,请建议! – 2010-12-19 10:16:39