2009-11-04 101 views
1

这里的问题是:转换的jQuery对象返回的XmlDocument

我遍历一组节点,并根据自己的类型,我想使用jQuery的XSLT插件。

var options = { 
    type: "POST", 
    url: "api/dosomething/usefull", 
    data: "orderid=12345", 
    success: function(response) { 
     $(response).find("group").each(function() { 
      if ($(this).attr(type) == "X") { 
       $.xslt({xml: $(this), xslUrl: 'xsl/order/x_group.xsl', xslCache: false, callback: function(data){ 
        //do something usefull with the transformed data 
       }});       
      } else { 
       $.xslt({xml: $(this), xslUrl: 'xsl/order/other_group.xsl', xslCache: false, callback: function(data){ 
        //do else with the transformed data 
       }});        
      } 
     }) 
    } 
}; 

问题是,xslt插件需要一个JavaScript文档对象。如何将每个函数的结果转换回文档? $(this).text()将去除所有内部xml标签。 $(this).html()也不起作用,因为jQuery下的XML不支持。显然使用这个作为参数(ofcourse)会触发一个错误。

替代considerd:

  • 使用JavaScript内置的文档剖析功能以减少文件,我们需要的节点,然后通过XSLT解析器抛出下摆。鉴于jQuery的易用性,我宁愿不这样做。
  • 将整个文档放到xslt解析器中并在xslt中解决。如果解析器(或者我们所定位的浏览器中的xslt解析器而不是plul)支持xsl:import,这将是一个选项。我们需要使用$(this).get(0)重用这些XSLT的
  • 我可以创建一个新的文件,如果只有我知道如何让内部字符串表示...
+0

您应该将编辑进入一个答案,然后在一对夫妇接受那么这个问题就会关闭。 – RedWolves 2009-11-04 15:19:31

+0

是啊,对不起,这是我第一次使用这个网站提出一个问题...总共n00b在这里;) – 2009-11-04 15:24:25

回答

0

更多的谷歌搜索解决了这个问题:

var xmldoc = ((new XMLSerializer()).serializeToString(this)); 

我现在可以使用xmlDoc中作为参数传递给XSLT引擎:)

0

你可以转换$(本)回原生DOM?

然后至少你会传入本地元素,然后传递一个jQuery集合。

+0

使用console.log($(this).get(0))给我完全一样的对象作为控制台.LOG(本)。无论如何,我试图把它扔进xslt解析器,但没有运气...... – 2009-11-04 15:04:26