【问题标题】:Jquery: Mapping XML Nodes to HTML ID elementsJquery:将 XML 节点映射到 HTML ID 元素
【发布时间】:2010-01-26 01:02:46
【问题描述】:

很难将标题中的内容封装起来......但是我们开始......

我意识到我可能直接看到了 JQuery 的明显功能,并且可能是内置功能。

我想做的是:

  1. 有一个 XML 文件(本地或通过服务器)包含恰好有它们的节点 节点名称,即作为 HTML 中文本框的 ID 名称 即

  2. 然后我想通过 JQuery AJAX 调用,解析 XML 并映射节点的值 到相同节点名称的 HTML ID 元素的值...

我马上意识到有 a) 可能是插件,b) 可能是更好的概念,但我只需要映射到基本的 HTML 元素.. 事实上,我可以在技术上拥有一些更高级的功能来填充组合框、收音机按钮等......

你有什么想法可以走吗?或者是否有一个简单的 JQuery 插件可以做到这一点?

P.S:我不喜欢这样的模板,因为即使我意识到 jTemplates 的强大功能,我真的不需要任何复杂/灵活的东西......

提前致谢!!

【问题讨论】:

  • 您只想查找具有 id 的元素吗?或者您是否有要插入其中的内容?你能提供一个xml文件的例子吗?

标签: jquery xml data-mapping


【解决方案1】:

这应该让你开始 xml 解析..

var xml = '<root><text1>i am in text1</text1><text2>i am in text2</text2></root>';
$(xml)
      .children()
      .each(
            function(){
                       alert(this.nodeName + ':' + $(this).text());
                      }
           );

nodeName 是 xml 中的标签名称,您将使用它作为 html 的 id .. jquery 文本方法将返回 xml 节点的值..(仅限文本)

加载xml文件使用

$.get( 
      '/path/to/filename.xml', 
      function(){ 
                 /*runs on success, do the parsing here*/
                },
      'xml'
     ); 

【讨论】:

    【解决方案2】:

    试试这个:

    $.get ('/path/to/xml', function (data)
    {
        $(data).children ().each (function ()
        {
            $('#' + this.nodeName).val ($(this).text());
        });
    })
    

    假设在 XML 中只有 1 级嵌套。

    【讨论】:

      【解决方案3】:

      实际上很棒的输入,感谢大家的帮助......它让我继续前进。

      再次,我意识到那里有模板引擎,但我的下一步是构建更复杂一点的功能,以便能够填充组合框、单选按钮等。只是 HTML 的基础知识。因为我是使用DHTMLX components 做任何花哨的事情.. 主要是因为它们似乎有我发现的最容易理解的 javascript 小部件.. 我知道 ExtJS 正在赶上更好的 docco、更简单的 API 等..

      总之,我将拥有:

      1. 在我的系统中,数据库中的字段名称相同。所以如果数据库字段 被称为 firstname,那么 HTML 元素将被称为 firstname
      2. 在我从数据库创建的 XML 中,我将添加诸如“元素类型”之类的属性 这将是文本、收音机、组合或其他内容,所以我知道如何填充这些值。
      3. 然后 javascript/JQuery 可以做它需要做的事情来显示数据..

      这一切的主要原因是我的合作伙伴可以将页面/布局设计为纯 HTML,而不用担心 XSLT/模板......并且填充了简单的数据......

      我确信肯定有一些“引擎/插件”在那里..但现在我会努力解决它...

      再次感谢...

      【讨论】:

        【解决方案4】:
        $(xml).find('foo').each( function() {
          alert (this.text());
        });
        

        【讨论】:

          猜你喜欢
          • 2015-08-21
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-10-11
          • 1970-01-01
          • 2011-03-28
          • 1970-01-01
          相关资源
          最近更新 更多