2009-11-04 42 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